tkinter combobox没有OK按钮

时间:2015-08-08 03:10:05

标签: tkinter

在下面的示例中,变量' food'单击按钮确定时打印。我需要消除这个OK按钮,因此我想要食物'食物'在下拉菜单中选择它时要打印的变量。有人能告诉我如何才能得到这个结果吗?因为我是tkinter的初学者,所以请回答清楚简单。

from Tkinter import *
import ttk

Root = Tk()

var = StringVar(Root)
var.set("apple") # initial value

option = ttk.Combobox(Root, textvariable=var, values=["apple", "carrot", "orange"])
option.pack()

def ok():
    food = var.get()
    print(food)

button = Button(Root, text="OK", command=ok)
button.pack()

mainloop()

2 个答案:

答案 0 :(得分:1)

您可以将函数绑定到事件,以便在窗口小部件发生事件时调用该函数。对于组合框,您可以绑定到<<ComboboxSelected>>事件。当值发生变化时,会为组合框生成此事件,这将导致您的函数被调用。

注意:绑定到事件时,调用的函数将被赋予一个表示事件的对象。如果您想使用和不使用bind的功能,可以通过为事件对象指定默认值None来使其成为可选项。

以下是一个例子:

def ok(event=None):
    food = var.get()
    print(food)

option.bind("<<ComboboxSelected>>", ok)

答案 1 :(得分:-1)

尝试查看此链接:how to send data with twisted protocol via factory

您需要使用after对象的Root方法重复调用delay = 20 #milliseconds def ok(): food = var.get() print(food) Root.after(20, ok) #Will call itself after every 20 ms Root.after(20,ok) #This is for the first call from the root to enter the ok function Root.mainloop() 函数。

Sub ToggleSpecialFormat()
If Range("A1").NumberFormat = "@" Then
    Range("A1").NumberFormat = "General"
    Range("A1").Formula = Range("A1").Formula
Else
    Range("A1").NumberFormat = "@"
    Range("A1").Formula = Range("A1").Formula
    Range("A1").Characters(5, 1).Font.Color = vbRed
End If
End Sub