PySimpleGUI 根据 sg.Radio 禁用了 InputText?
我刚接触PySimpleGUI,
我想实现一个功能:有两个单选按钮。当我选择其中一个时,下面的文本输入框可以编辑;当我选择另一个时,下面的文本框就不能编辑了。这是我的代码。我尝试了很多次,但始终无法实现我想要的动态效果。你们能帮帮我吗?
import PySimpleGUI as sg
import os as os
def main():
sg.theme('Tan')
column =[
[sg.Text('sliding window?',font=('Microsoft Yahei',10)),sg.Radio('Yes','g',default=True,key='-Radio1-'),sg.Radio('No','g',default=False,key='-Radio2-')],
[sg.Text('fill in',font=('Microsoft Yahei',10)),sg.InputText('3',key='-S_Window-',visible=True,disabled=False, enable_events=True)],
]
layout = [[sg.Column(column)]]
# Create the window
window = sg.Window('abcd', layout,resizable='True',finalize=True)
while True:
event, values = window.read()
if values['-Radio1-'] == True:
window['-S_Window-'].update(disabled=False)
window.refresh()
if values['-Radio2-'] == True:
window['-S_Window-'].update(disabled=True,background_color = 'grey')
window.refresh()
window.close()
if __name__ =='__main__':
main()
1 个回答
0
在你的 sg.Radio
元素中,如果设置了选项 enable_events=True
,那么当你点击这些单选按钮时,就会产生一个事件。如果没有这个设置,点击它们就不会产生事件,而且输入框的禁用状态也不会更新。
import PySimpleGUI as sg
sg.theme('DarkBlue')
layout =[
[sg.Radio('Yes', 'g', enable_events=True, key=("Radio", 1)),
sg.Radio('No', 'g', enable_events=True, key=("Radio", 2))],
[sg.InputText('3', enable_events=True, key='-S_Window-')],
]
window = sg.Window('Title', layout)
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
elif isinstance(event, tuple) and event[0] == "Radio":
disabled = (event[1]==2)
window['-S_Window-'].update(disabled=disabled)
window.close()