我正在尝试找出如何正确使用tkinter单选按钮。
我已将此问题用作准则:Radio button values in Python Tkinter
由于某种原因,我无法弄清楚如何返回表示用户选择内容的变量。
代码:
def quit_loop():
global selection
selection = option.get()
root.quit()
return selection
def createWindow():
root = Tk()
root.geometry=('400x400')
option = StringVar()
option.set('none')
R1 = Radiobutton(root, text='Compile', value = 'Compile', var=option)
R2 = Radiobutton(root, text='Create', value = 'Create', var=option)
button = Button(root, text='ok', command=quit_loop)
R1.pack()
R2.pack()
button.pack()
root.mainloop()
当我打电话给createWindow()
时,我希望弹出单选按钮框,并且在做出选择并按下'ok'之后,我希望它返回一个变量selection
,该变量与选择的按钮。有什么建议吗? Tkinter的东西对我来说尤其具有挑战性,因为它看起来很气质。
答案 0 :(得分:1)
如果要访问option
以外的地方,则需要将createWindow
设置为全局
这是您的代码示例,该代码将打印出所选单选按钮的值,然后在您单击该按钮时退出。我只需要声明root
和options
为全局变量即可。
from tkinter import *
def quit_loop():
global selection
selection = option.get()
root.quit()
return selection
def createWindow():
global option, root
root = Tk()
root.geometry=('400x400')
option = StringVar()
option.set('none')
R1 = Radiobutton(root, text='Compile', value = 'Compile', var=option)
R2 = Radiobutton(root, text='Create', value = 'Create', var=option)
button = Button(root, text='ok', command=quit_loop)
R1.pack()
R2.pack()
button.pack()
root.mainloop()
createWindow()
答案 1 :(得分:-1)
据我所知,与tkinter通信需要做两件事
小部件:传递变量,并传递命令。用户与之互动时
小部件,tkinter将执行两件事:更新变量的值并调用
函数以command
的形式传入。取决于我们的价值
命令功能中的变量。
import tkinter as tk
from tkinter import StringVar, Radiobutton
def handle_radio():
print(option.get())
root = tk.Tk()
option = StringVar()
option.set('none')
R1 = Radiobutton(root, text='Compile', value = 'Compile', var=option, command=handle_radio)
R2 = Radiobutton(root, text='Create', value = 'Create', var=option, comman=handle_radio)
R1.pack()
R2.pack()
root.mainloop()
当用户选择适当的代码时,代码将显示“创建”和“编译” 单选。
希望这会有所帮助。
此致
天竺葵