PySimpleGUI:window.read() 与更新 window 或元素有何关系?
PySimpleGUI: How is window.read() related to updating a window or element?
我有一个 windows,它基本上是一个 Graph
,它显示了带有一些叠加层的相机图像。
在尝试将代码清理为 OOP 样式时,我遇到了一些元素不再绘制或更新的问题。我知道这是由更新相对于 window.read()
的位置引起的,但我无法找出使其工作的正确方法。
到目前为止代码看起来像
import PySimpleGUI as sg
while True:
gui.window['-MAIN-'].draw_text('some_text', (80, 15), color='black')
event, values = gui.update()
if event == 'Exit' or event == sg.WIN_CLOSED:
break
gui.window['-PAUSE-'].update(f'Paused')
gui.window['-MAIN-'].erase()
gui.window['-MAIN-'].draw_image(data=some_bytes)
我用的东西是
- 擦除主要成分
Graph.erase()
- 使用
element.update()
更改标签
- 画图
element.draw_image()
根据我在文档中阅读的内容,我假设一旦调用 window.read()
,就会应用使用 element.update()
进行的更新 ti 元素。
对吗?
element.draw_image()
和 Graph.erase()
是一样的吗?
因为我不确定它到底是如何工作的,所以我不知道在主循环中排序事物的好方法是什么。
从菜谱中的示例中我看到,通常放置在事件外观中的第一件事是对 window.read()
.
的调用
但是 Graph.erase()
什么地方比较好?在 window.read()
?
之前还是之后
首先,定义布局和您的 window,如果 window 尚未通过选项 finalize=True
或方法 finalize
调用完成,则不会创建 GUI。
在 window 或 GUI 完成后,您可以在 window 或元素上做一些事情,例如调用 update
元素,在 sg.Canvas
上绘制或擦除图形,所有这些操作中的一部分只是更新 window 或元素,而不是真正在 GUI 上。
两种方法将更新 GUI,sg.Window.read
或 sg.Window.refresh
。
如果您想立即更新 GUI,请调用 refresh
,或者在您的 GUI 准备好响应来自 keyboard/mouse 的任何事件之前调用 read
,否则。
大多数时候,事件循环中的第一个语句是 event, values = window.read()
,然后为事件发生做一些事情。
我有一个 windows,它基本上是一个 Graph
,它显示了带有一些叠加层的相机图像。
在尝试将代码清理为 OOP 样式时,我遇到了一些元素不再绘制或更新的问题。我知道这是由更新相对于 window.read()
的位置引起的,但我无法找出使其工作的正确方法。
到目前为止代码看起来像
import PySimpleGUI as sg
while True:
gui.window['-MAIN-'].draw_text('some_text', (80, 15), color='black')
event, values = gui.update()
if event == 'Exit' or event == sg.WIN_CLOSED:
break
gui.window['-PAUSE-'].update(f'Paused')
gui.window['-MAIN-'].erase()
gui.window['-MAIN-'].draw_image(data=some_bytes)
我用的东西是
- 擦除主要成分
Graph.erase()
- 使用
element.update()
更改标签
- 画图
element.draw_image()
根据我在文档中阅读的内容,我假设一旦调用 window.read()
,就会应用使用 element.update()
进行的更新 ti 元素。
对吗?
element.draw_image()
和 Graph.erase()
是一样的吗?
因为我不确定它到底是如何工作的,所以我不知道在主循环中排序事物的好方法是什么。
从菜谱中的示例中我看到,通常放置在事件外观中的第一件事是对 window.read()
.
但是 Graph.erase()
什么地方比较好?在 window.read()
?
首先,定义布局和您的 window,如果 window 尚未通过选项 finalize=True
或方法 finalize
调用完成,则不会创建 GUI。
在 window 或 GUI 完成后,您可以在 window 或元素上做一些事情,例如调用 update
元素,在 sg.Canvas
上绘制或擦除图形,所有这些操作中的一部分只是更新 window 或元素,而不是真正在 GUI 上。
两种方法将更新 GUI,sg.Window.read
或 sg.Window.refresh
。
如果您想立即更新 GUI,请调用 refresh
,或者在您的 GUI 准备好响应来自 keyboard/mouse 的任何事件之前调用 read
,否则。
大多数时候,事件循环中的第一个语句是 event, values = window.read()
,然后为事件发生做一些事情。