Python-Tkinter中的ttk.OptionMenu组件在选择后第一个选项消失的问题

环境:

系统:Windows10 x64
  Python:Python 2.7.12
  tkinter:Python自带

问题说明:

在tkinter中有两个OptionMenu,一个是tkinter.OptionMenu,另一个是ttk.OptionMenu。
  tkinter.OptionMenu外观丑,有点反人类。

《Python-Tkinter中的ttk.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’这个选项没有了。

《Python-Tkinter中的ttk.OptionMenu组件在选择后第一个选项消失的问题》 选择前

《Python-Tkinter中的ttk.OptionMenu组件在选择后第一个选项消失的问题》 选择后

  不太清楚这是否是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()

效果如下:

《Python-Tkinter中的ttk.OptionMenu组件在选择后第一个选项消失的问题》 选择前

《Python-Tkinter中的ttk.OptionMenu组件在选择后第一个选项消失的问题》 选择后

    原文作者:无聊的IT
    原文地址: https://www.jianshu.com/p/fe5d0796eedb
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞