[英]Update not changing visibility in PySimpleGUI
我试图通过使用 visible=False 使 GUI 元素不可见。 似乎更新 function 与所有其他属性以及下面代码中显示的值一起工作,除了可见属性。 具体来说,尽管程序要求元素 (2,2) 变为不可见,但元素 (4,2) 正在变为不可见。 对此的任何帮助将不胜感激。 谢谢
import PySimpleGUI as sg
layout = [[sg.B(' ', size=(8,4), key=(i,j)) for i in range(0,5)] for j in range(0,4)]
window = sg.Window('Trying to change attribute', layout).Finalize()
window.Maximize()
while True: # Event Loop
event, values = window.read()
print(event, values)
window[(1,1)].update(button_color=('blue','yellow'))
window[(2,2)].update(visible=False) ## Problem here
window[(3,3)].update('Hello')
if event in (None, 'Exit'):
break
current_marker = window[event].get_text()
您遇到的行为是由于不可见的元素在布局中松动了它们的 position。 换句话说,元素 (2,2) 消失了。 如果您稍后让它可见,它将出现在相应行的末尾。
在大多数情况下,这不是我们想要的行为。 您可以通过使用 function 为元素保留一个位置来防止它place()
,如下所示:
import PySimpleGUI as sg
def place(elem, size=(None, None)):
return sg.Column([[elem]], size=size, pad=(0, 0), element_justification='center')
def test():
layout = [[place(sg.B(' ', size=(8, 4), key=(i, j))) for i in range(0, 5)] for j in range(0, 4)]
window = sg.Window('Trying to change attribute', layout).Finalize()
window.Maximize()
while True: # Event Loop
event, values = window.read()
if event in (None, 'Exit'):
break
print(event, values)
window[(1, 1)].update(button_color=('blue', 'yellow'))
window[(2, 2)].update(visible=False)
window[(3, 3)].update('Hello')
这是结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.