环境:
系统:Windows10 x64
Python:Python 2.7.12
tkinter:Python自带
问题说明:
在tkinter中有两个OptionMenu,一个是tkinter.OptionMenu,另一个是ttk.OptionMenu。
tkinter.OptionMenu外观丑,有点反人类。
ttk.OptionMenu美观,但在使用中发现一旦用户选择选项后,第一个选项内容会消失。
示例:
import Tkinter as tk
import ttk
root=tk.Tk()
v=tk.StringVar()
var=['one','two','three']
v.set(var[0])
a=ttk.OptionMenu(root,v,*var)
a.grid()
root.mainloop()
下面分别是用户选择前和选择后的截图,从选择后的截图上可以看出来,'one'这个选项没有了。
不太清楚这是否是tkk.OptionMenu组件的一个BUG,还是我使用的方法不正确。
问题解决:
因为选择后只有第一个选项会消失,所以我们只要在代码中将第一个选项设置为一个空字符串就可以解决此问题,而相应的默认选项也要改为第二项:
import Tkinter as tk
import ttk
root=tk.Tk()
v=tk.StringVar()
var=['','one','two','three']
v.set(var[1])
a=ttk.OptionMenu(root,v,*var)
a.grid()
root.mainloop()
效果如下: