gpt4 book ai didi

python - 使用 Pyglet 在 on_mouse_press 上插入文本

转载 作者:行者123 更新时间:2023-12-01 09:15:13 24 4
gpt4 key购买 nike

我试图在单击鼠标后使用 Pyglet 将文本插入到窗口中。下面的代码创建窗口,当我单击屏幕时进行打印,但不会将文本添加到屏幕上。

有什么想法吗?

提前致谢。

import pyglet
from pyglet.gl import *
from pyglet.window import mouse


class Drainage_Window(pyglet.window.Window):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_minimum_size(300, 300)

def on_draw(self):
self.clear()


if __name__ == '__main__':
window = Drainage_Window(width=1920 // 4, height=1080//4,
caption="Drainage Network", resizable=True)
glClearColor(0.7, 0.7, 1, 1)

@window.event
def on_mouse_press(x, y, button, modifiers):
if button == mouse.LEFT:
print('The left mouse button was pressed.')
label = pyglet.text.Label('Click!',
font_name='Times New Roman',
font_size=16,
x=x, y=y,
anchor_x='center', anchor_y='center')

window.push_handlers(pyglet.window.event.WindowEventLogger())

@window.event
def on_draw():
label.draw()

pyglet.app.run()

最佳答案

我只是稍微重新排列了你的代码,将鼠标按下事件移到了窗口类中。标签一开始是None,当按下鼠标左键时,标签将变成一个Label对象。在draw方法中添加了一个简单的if检查,以便仅当标签不为None时才绘制标签。现在它可以工作了。

import pyglet
from pyglet.gl import *
from pyglet.window import mouse


class Drainage_Window(pyglet.window.Window):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_minimum_size(300, 300)

self.label = None

def on_mouse_press(self, x, y, button, modifiers):
if button == mouse.LEFT:
self.label = pyglet.text.Label('Click!',
font_name='Times New Roman',
font_size=16,
x=x, y=y,
anchor_x='center', anchor_y='center')

def on_draw(self):
self.clear()
if self.label:
self.label.draw()


if __name__ == '__main__':
window = Drainage_Window(width=1920 // 4, height=1080//4,
caption="Drainage Network", resizable=True)
glClearColor(0.7, 0.7, 1, 1)

pyglet.app.run()

关于python - 使用 Pyglet 在 on_mouse_press 上插入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51338079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com