确定在tkinter中选择了哪个单选按钮

时间:2019-10-22 14:46:50

标签: python tkinter

我正在尝试找出如何正确使用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的东西对我来说尤其具有挑战性,因为它看起来很气质。

2 个答案:

答案 0 :(得分:1)

如果要访问option以外的地方,则需要将createWindow设置为全局

这是您的代码示例,该代码将打印出所选单选按钮的值,然后在您单击该按钮时退出。我只需要声明rootoptions为全局变量即可。

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()

当用户选择适当的代码时,代码将显示“创建”和“编译” 单选。

希望这会有所帮助。

此致

天竺葵