[英]Assign variable to radiobutton Tkinter
我有此代码,要求用户选择选项之一。 我使用单选按钮。 用户选择了自己的选择后,该选择将使用另一个if语句。 我已经将选择的变量分配为variable = specialistchoose
。 但是,当我使用specialistchoose
或specialistchoose.get()
,它不起作用。 有人可以帮忙吗?
specialistchoose = IntVar()
r1 = Radiobutton (f2, text = "Cardiology", variable = specialistchoose, value = 1, command = command_r1 )
r1.grid(row = 4, column = 0, stick = W)
r2 = Radiobutton (f2, text = "Gastroenterology", variable = specialistchoose, value = 2, command = command_r2)
r2.grid(row = 4, column = 1,stick = W )
r3 = Radiobutton (f2, text = "Dermatology", variable = specialistchoose, value = 3, command = command_r3)
r3.grid (row = 4, column = 2,stick = W )
r4 = Radiobutton (f2, text = "Psychiatry", variable = specialistchoose, value = 4, command = command_r4)
r4.grid (row = 5, column = 0,stick = W )
r5 = Radiobutton (f2, text = "Dentist", variable = specialistchoose, value = 5, command = command_r5)
r5.grid(row = 5, column = 1,stick = W )
f2.place(relx = 0.01, rely = 0.125, anchor = NW)
Label(f1, text = "Specialist").place(relx = .06, rely = 0.125, anchor = W)
f1.grid(stick = W)
if specialistchoose.get() == "Cardiology":
file = open ("test2.txt", "w")
file.write ("Specialist : Cardiology")
file.close()
elif specialistchoose.get() == "Gastroenterology":
file = open ("test2.txt", "w")
file.write ("Specialist : Gastroenterology")
file.close()
elif specialistchoose.get() == "Dermatology":
file = open ("test2.txt", "w")
file.write ("Specialist : Dermatology")
file.close()
elif specialistchoose.get() == "Psychiatry":
file = open ("test2.txt", "w")
file.write("Specialist : Psychiatry")
file.close()
elif specialistchoose.get() == "Dentist":
file = open ("test2.txt", "w")
file.write("Specialist : Dentist")
file.close()
注意:这只是更长代码的示例。
由于仅在它们创建后立即get()
它们的值,所以您将仅获得它们的初始值,仅此而已。
尝试使用command
或另一个按钮获取它们的值。
不知道在command_rX
下有什么,但是您应该将那些if分开并放在相应的command
下。
另外,由于您的变量是IntVar()
,因此您将获得的value
在1到5之间(含1和5),因为您是这样分配的。
def command_r1():
with open('test2.txt', 'w') as file:
file.write ("Specialist : Cardiology")
def command_r2():
with open('test2.txt', 'w') as file:
file.write ("Specialist : Gastroenterology")
#etc...
或创建一个按钮,单击该按钮将获得值并执行所有这些if-else事情。
def external_button_callback():
radioValue = specialistchoose.get()
if radioValue == 1:
with open('test2.txt', 'w') as file:
file.write ("Specialist : Cardiology")
#etc...
btn = Button(f2, text= "Get Value" command = external_button_callback)
btn.grid(row=6, column=0)
另一个小问题是,在使用文件时,最好与with
语句一起使用with
因为它会在您移出作用域时自动处理关闭,并且您不必每次都担心关闭。
而且,每次更改值时,由于在w
模式下打开该txt文件,它都会从头开始创建。 我不知道那是不是您想要的,但想要提示。
radiobutton
变量的值与其text
无关。 您将变量specialistchoose
选择为IntVar
因此它将是一些int。
if specialistchoose.get() == "Cardiology":
永远不会为True
昨天我在一个非常相同的主题上回答了您的问题: 单击单选按钮Tkinter后,将框架变灰
如果将func
更改为以下形式:
def func():
print specialistchoose.get()
您将能够看到每个radiobutton
被按下时得到的值。
在此可以确定是否按下它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.