在下面的示例中,变量' 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()
答案 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