如何解决TKinter 宽绑定问题
我是 TKinter 的新手,我正在测试 Radio Widget。我正在使用这个简单的程序来测试我是否可以正确使用它。
import tkinter as tk
from tkinter import ttk
from tkinter.messageBox import showinfo
from tkinter import Tk,Text
# root window
root = tk.Tk()
root.geometry('300x220')
root.resizable(False,False)
root.title('Radio Button Demo')
#display result
def display_radio():
showinfo(
title = "Result",message = selectable_numbers.get()
)
#Selectable options
selectable_numbers = tk.StringVar()
numbers = (('1','One'),('2','Two'),('3','Three'),('4','Four'))
#Label
simple_label = ttk.Label(text = "Select a number")
simple_label.pack(fill='x',padx=5,pady=5)
#Creating the radio buttons with iteration
for number in numbers:
r = ttk.Radiobutton(root,text = number[0],value = number[1],variable = selectable_numbers
)
r.pack(fill='x',padx = 5,pady = 5)
#Button to display
display_button = ttk.Button(root,text = "display Number")
display_button.pack(fill='x',pady=5)
display_button.bind('<Any-Button>',display_radio(),add='+')
root.mainloop()
当我运行这个程序时,消息框立即出现,里面什么也没有,然后按钮不再起作用。我正在将此代码与有效的示例代码进行比较,据我所知,它们在功能上是相同的。
import tkinter as tk
from tkinter import ttk
from tkinter.messageBox import showinfo
# root window
root = tk.Tk()
root.geometry('300x220')
root.resizable(False,False)
root.title('Radio Button Demo')
def show_selected_size():
showinfo(
title='Result',message=selected_size.get()
)
selected_size = tk.StringVar()
sizes = (('Small','S'),('Medium','M'),('Large','L'),('Extra Large','XL'),('Extra Extra Large','XXL'))
# label
label = ttk.Label(text="What's your t-shirt size?")
label.pack(fill='x',pady=5)
# radio buttons
for size in sizes:
r = ttk.Radiobutton(
root,text=size[0],value=size[1],variable=selected_size
)
r.pack(fill='x',pady=5)
# button
button = ttk.Button(
root,text="Get Selected Size",command=show_selected_size)
button.pack(fill='x',pady=5)
root.mainloop()
按钮在我的代码中不起作用的任何原因?我已经使用命令绑定和事件绑定测试了我的代码,它们都具有相同的结果。
解决方法
在您的第一个程序中,您将 <Any-Button>
绑定到 display_radio
。
函数 display_radio
从绑定接收事件,因此更改
def display_radio( ):
到 def display_radio( event ):
并改变
display_button.bind('<Any-Button>',display_radio(),add='+')
到
display_button.bind('<Any-Button>',display_radio,add='+')
这会解决它。
我发现你的第二个程序没有问题,按预期工作!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。