如何解决如何让我的 PySimpleGui 窗口使用不那么单一?
我一直在使用 pysimplegui 制作一个有点大的程序,我想知道是否有更好的设计模式来处理窗口。
目前我在开始时将窗口设置为一个空的全局变量,然后在我的程序启动时使用布局进行设置。
WINDOW=None
def setup()
global WINDOW
...
WINDOW = psg.Window("Name",layout)
我使用全局系统的原因是程序非常异步,几乎我程序的每个部分都使用窗口,但只有特定部分实际更新它(通过禁用大多数元素来完成)
pysimplegui 代码是否有更好的设计模式,考虑到代码非常单一?
解决方法
不确定如何减少整体性?
展示我如何做的例子。
import PySimpleGUI as sg
def hide(key,settings):
setting = not settings[key]
settings[key] = setting
window[key].update(visible=setting)
def layout(settings):
selection1 = [
[sg.Text("Select item1:")]] + [
[sg.Checkbox(f"Item {j*3+i+1}")
for i in range(3)] for j in range(3)
]
selection2 = [
[sg.Text("Select item2:")]] + [
[sg.Checkbox(f"Item {j*3+i+1}")
for i in range(4)] for j in range(2)
]
form = [
[sg.Text('Selection'),sg.Button("Item 1"),sg.Button("Item 2")],[sg.pin(sg.Column(selection1,visible=settings['Col 1'],key='Col 1'),shrink=False)],[sg.pin(sg.Column(selection2,visible=settings['Col 2'],key='Col 2'),]
return form
settings = {'Col 1':True,'Col 2':False}
sg.theme('DarkBlue')
window = sg.Window('Title',layout(settings),size=(250,260),use_default_focus=False,finalize=True)
for key,element in window.AllKeysDict.items(): # remove dash box from elements
element.Widget.configure(takefocus=0)
while True:
event,values = window.read()
if event == sg.WINDOW_CLOSED:
break
elif event in ("Item 1","Item 2"):
key = 'Col 1' if event == 'Item 1' else 'Col 2'
hide(key,settings)
window.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。