这是我第一次尝试GUI。现在,我只希望能够单击一个单选按钮,并让它打印出我分配给该按钮的值。然而,var.get()
没有给我任何东西。我用IntVar
试了一下(我的值是1和2,而不是“质子”和“电子”),var.get()
只会给我0。对于StringVar
,它不会给出任何东西(当单选按钮调用choosecharge
时,不会打印任何东西)。我试过阅读关于单选按钮的东西,我根据我看到的方式编写了代码,它成功地创建了单选按钮,但重点是能够在单击时使用它们的值。
import tkinter as tk
def choosecharge():
print(var.get())
root = tk.Tk()
var = tk.StringVar()
proton = tk.Radiobutton(root, text = "proton", variable = var, value = "proton", command = choosecharge)
proton.pack( )
electron = tk.Radiobutton(root, text="electron", variable = var, value= "electron", command = choosecharge)
electron.pack( )
root.mainloop()
发布于 2020-02-01 22:03:19
我采取了一种稍微不同的方法来完成这项任务。
中打印字符串
import tkinter as tk
root = tk.Tk()
# define an IntVar
var = tk.IntVar()
# create a dictionary of key:value pair as radiobutton_value: str_name_to_print
values = {1: "proton", 2: "electron"}
# instantiate a label widget
lbl = tk.Label(root)
def choosecharge():
# update the label widgets using the dictionary
lbl.config(text=values[var.get()])
proton = tk.Radiobutton(root, text="proton", variable=var, value=1, command=choosecharge)
proton.pack(anchor=tk.W)
electron = tk.Radiobutton(root, text="electron", variable=var, value=2, command=choosecharge)
electron.pack(anchor=tk.W)
# pack the label widget below the two radiobuttons
lbl.pack()
root.mainloop()
屏幕截图
为了更好地理解,我对代码中的行进行了注释。我希望这个解决方案能帮助你。
https://stackoverflow.com/questions/60017262
复制相似问题