Tkinter组合框 - 在单击小组件时优雅地失去焦点

时间:2015-02-20 04:48:22

标签: python combobox tkinter focus

我有一个用Python Tkinter编写的ComboBox,当你点击它而不选择任何东西时会发出可怕的系统警报声。

例如,当您点击下拉列表并选择项目时,它可以正常工作。但是,如果您按下下拉菜单然后决定单击关闭,它将按预期失去焦点,但会发出警报声。可以通过某种方式禁用它,以便它可以优雅地失去焦点而不抱怨吗?我是OSX 10.9顺便说一句

更新 - 产生警报的最小工作代码。

from Tkconstants import *
import ttk
import Tkinter

class PyPrecursor():

    def __init__(self,root):
        self.root = root
        self.TabNotebook()

    def TabNotebook(self):
        self.main_notebook_frame = ttk.Notebook(self.root, name='main_notebook')
        self.main_notebook_frame.enable_traversal()
        self.OptionsF = ttk.Frame(self.main_notebook_frame, name='options')
        self.length_options_frame = ttk.LabelFrame(
        self.OptionsF, labelwidget=ttk.Label(font=('Arial', 15), text="Length Options:"))
        self.hcdr3_length_label = ttk.Label(self.length_options_frame, text="HCDR3 Length")
        self.HCDR3_Length = Tkinter.StringVar()
        self.hcdr3_length_combo = ttk.Combobox(
        self.length_options_frame, values=[i for i in xrange(16, 36)], 
             textvariable=self.HCDR3_Length)
        self.hcdr3_length_combo.current(0)
        self.length_options_frame.pack(side=TOP,fill=X,pady=5)
        self.hcdr3_length_label.pack(side=LEFT)
        self.hcdr3_length_combo.pack(side=LEFT,anchor=W)
        self.main_notebook_frame.pack(side=TOP,expand=1,fill=BOTH,padx=10,pady=10)
        self.main_notebook_frame.add(
            self.OptionsF, text="Input Options", underline=0, padding=2)
        self.main_notebook_frame.bind("<<NotebookTabChanged>>",self.update_)

    def update_(self,event):
        self.root.update()

def main():
    root = Tkinter.Tk()
    PyPrecursor(root)
    root.mainloop()
    root.update_idletasks()


if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:0)

您可能想尝试以下方法: self.hcdr3_length_combo.bell(displayof=1)

虽然不确定是1还是0 ... 如果它不起作用,则可能是一个包含小部件的声音发出了。可能还希望将其应用于父窗口小部件。我对python 2.7不熟悉,当我使用python3进行少量修改时它不会发出声音。

通常,当您找不到特定窗口小部件的选项时,可以在常规窗口小部件选项中找到某些内容。只需搜索“ tkinter窗口小部件选项”,您将获得以下位置: https://effbot.org/tkinterbook/widget.htm