PySimpleGui:点击输入文本框自动清空失效,如何清除内容?
解决PySimpleGUI InputText点击自动清空的问题
首先澄清一个误区:do_not_clear=False这个参数的作用是窗口事件循环处理后不清空输入框内容,和点击输入框时清空默认文本完全无关,所以设置它没效果是正常的。
要实现点击输入框自动清空默认内容,有两种实用方法:
方法一:监听输入框的点击事件
给InputText组件设置唯一key,然后在事件循环里捕获点击事件,触发清空操作:
import PySimpleGUI as sg layout = [ [sg.InputText("Message", key="-INPUT_BOX-")] ] window = sg.Window("Demo", layout) while True: event, values = window.read() if event == sg.WIN_CLOSED: break # 捕获输入框的点击事件并清空 if event == "-INPUT_BOX-": window["-INPUT_BOX-"].update(value="") window.close()
方法二:监听输入框获得焦点事件(更灵活)
给InputText设置enable_events=True,这样不管是点击输入框还是用Tab键切换到输入框,只要获得焦点就触发事件。如果只想清空默认文本,可以加个内容判断,避免清空用户后续输入的内容:
import PySimpleGUI as sg layout = [ [sg.InputText("Message", key="-INPUT_BOX-", enable_events=True)] ] window = sg.Window("Demo", layout) while True: event, values = window.read() if event == sg.WIN_CLOSED: break # 输入框获得焦点且内容为默认文本时清空 if event == "-INPUT_BOX-" and window["-INPUT_BOX-"].get() == "Message": window["-INPUT_BOX-"].update(value="") window.close()
如果需要每次点击输入框都清空(不管之前有没有输入内容),去掉代码里的内容判断即可。
内容的提问来源于stack exchange,提问作者Hardliner
相关产品推荐
相关产品推荐

