Mac环境下Tkinter Entry组件显示异常的原因及解决方法咨询
Mac环境下Tkinter Entry组件显示异常的原因及解决方法咨询
我最近在Mac上用Python 3.12.4写Tkinter代码时遇到了个奇怪的问题:设置了黄色背景的Entry组件,一开始完全看不到它的黄色背景,只有点击它的时候,黄色才会显现出来。
先看我最开始的代码:
import tkinter as tk root = tk.Tk() entryText1 = tk.Entry(root, bg='yellow') entryText1.delete(0,tk.END) entryText1.insert(0,'Enter Upper Threshold:') entryText1.pack() root.focus_force() root.mainloop()
这个Entry确实是存在的,但就是没法正常显示黄色背景,只有点击它的时候才看得见。
后来我试着调整代码,发现只要在Entry后面加一个Button组件,Entry就能正常显示了:
import tkinter as tk root = tk.Tk() entryText1 = tk.Entry(root, bg='yellow', fg="red") entryText1.delete(0,tk.END) entryText1.insert(0,'Enter Upper Threshold:') entryText1.pack() button= tk.Button(root) button.pack() root.focus_force() root.mainloop()
另外一种可行的办法是把Entry放到一个指定了宽高的Frame里,这样Entry也能正常显示:
import tkinter as tk root = tk.Tk() input_frame= tk.Frame(root, width=200, height=200) input_frame.pack() entry = tk.Entry(input_frame, bg='yellow', fg="red") # Width of entry widget entry.delete(0,tk.END) entry.insert(0, 'Enter Upper Threshold:') entry.pack() root.focus_force() root.mainloop()
但如果Frame不指定宽高的话,Entry又会变回看不见的状态。
我现在真正想搞清楚的是:为什么Tkinter的表现这么不一致?我到底遗漏了什么细节?有没有办法让单独的Entry组件在pack之后就能直接正常显示出来?
备注:内容来源于stack exchange,提问作者Ronny
相关产品推荐
相关产品推荐

