Tkinter中无法将Text组件数据与字符串比较的问题求助
解决Tkinter Text组件内容与字符串比较失效的问题
嘿,这个问题我之前也踩过坑!核心原因是Tkinter的Text组件用get('1.0', END)获取内容时,末尾会自动附加一个换行符(\n),所以你直接和'Click and Say...'比较肯定不相等。
两种快速修复方案:
方案1:获取内容时排除末尾的换行符
使用END-1c作为结束索引(-1c表示“减去1个字符”),这样就能精准拿到你插入的原始文本:
def on_entry_click_text(event): # 获取Text内容时去掉末尾的换行符 current_text = speech_text.get('1.0', END-1c) if current_text == 'Click and Say...': speech_text.delete('1.0', END) speech_text.config(fg='black')
方案2:获取后处理文本
如果觉得索引写法有点绕,也可以先获取完整内容,再用rstrip('\n')去掉末尾的换行:
def on_entry_click_text(event): current_text = speech_text.get('1.0', END).rstrip('\n') if current_text == 'Click and Say...': speech_text.delete('1.0', END) speech_text.config(fg='black')
额外小提醒:
注意你代码里的事件绑定细节:你绑定的是<FocusOut>事件,但写的绑定函数是on_focusout_text,而定义的函数名是on_entry_click_text,这里明显是笔误!要保证绑定的函数名和定义的完全一致,不然事件触发时会找不到对应的处理函数哦。
内容的提问来源于stack exchange,提问作者Sarthak_Bisht
相关产品推荐
相关产品推荐

