【发布时间】:2021-07-26 10:23:48
【问题描述】:
我是 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', padx=5, 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', padx=5, 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', padx=5, pady=5)
# button
button = ttk.Button(
root,
text="Get Selected Size",
command=show_selected_size)
button.pack(fill='x', padx=5, pady=5)
root.mainloop()
为什么按钮在我的代码中不起作用?我已经用命令绑定和事件绑定测试了我的代码,它们都有相同的结果。
【问题讨论】:
-
代替
display_button.bind(..., display_radio())使用:display_button.bind(..., display_radio)
标签: python tkinter python-3.7 ttk