使用 Pyglet 插入文本 on_mouse_press
Inserting text on_mouse_press using Pyglet
我正在尝试在单击鼠标后使用 Pyglet 将文本插入 window。
下面的代码创建了 window,当我点击屏幕时打印,但没有将文本添加到屏幕。
知道这是为什么吗?
提前致谢。
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()
我只是稍微重新安排了您的代码,在 window class 中移动了鼠标按下事件。标签以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()
我正在尝试在单击鼠标后使用 Pyglet 将文本插入 window。 下面的代码创建了 window,当我点击屏幕时打印,但没有将文本添加到屏幕。
知道这是为什么吗?
提前致谢。
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()
我只是稍微重新安排了您的代码,在 window class 中移动了鼠标按下事件。标签以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()