如何通过SimpleGui禁用Output组件的用户输入功能?
解决PySimpleGUI中Output元素禁用输入的问题
PySimpleGUI的sg.Output本身没有直接生效的readonly参数,你需要通过操作其底层的tkinter组件来实现禁用输入:
实现步骤
- 窗口创建完成后,通过
window['OUTPUT'].Widget获取sg.Output对应的tkinter Text对象 - 调用该对象的
config(state='disabled')方法,即可禁用输入 - 若需要向Output中写入内容,需临时将状态切换为
normal,写入完成后再切回disabled(因为禁用状态下无法写入内容)
示例代码
import PySimpleGUI as sg # 构建布局 layout = [ [sg.Output(size=(20, 5), key='OUTPUT', font=('Signore', 14), background_color='#000000', text_color='white')], [sg.Button('写入内容'), sg.Button('退出')] ] window = sg.Window('禁用Output输入示例', layout) # 获取Output底层组件并设置禁用 output_widget = window['OUTPUT'].Widget output_widget.config(state='disabled') while True: event, values = window.read() if event == sg.WIN_CLOSED or event == '退出': break if event == '写入内容': # 临时启用状态以写入内容 output_widget.config(state='normal') print('测试写入的内容') # 再次禁用输入 output_widget.config(state='disabled') window.close()
关键说明
sg.Output基于tkinter的Text组件实现,必须通过其Widget属性才能访问底层配置- 若仅需静态展示内容,无需动态写入,初始化后直接设置
state='disabled'即可
内容的提问来源于stack exchange,提问作者Jesus
相关产品推荐
相关产品推荐

