【问题标题】:Determining what radiobutton was selected tkinter确定选择了哪些单选按钮 tkinter
【发布时间】:2020-02-18 18:11:41
【问题描述】:

我正在尝试弄清楚如何正确使用 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() 时,我希望单选按钮框会弹出,在做出选择并按下“确定”后,我希望它返回一个与所选按钮相关的变量selection。有什么建议吗? Tkinter 的东西对我来说特别具有挑战性,因为它看起来很喜怒无常。

【问题讨论】:

  • 您希望将值返回到哪里到?您没有自己调用quit_loop(),您无权访问它的返回值。您需要在函数中使用该值执行任何需要执行的操作。
  • @jasonharper 这是我很困惑的地方,不知道该怎么做。我发布的链接设置的方式完全相同,所以我很困惑。我假设按下按钮时它会调用quit_loop() 函数,该函数将返回所选内容的值

标签: python tkinter


【解决方案1】:

如果你想在createWindow之外访问,你需要将option设为全局

这是您的代码示例,它将打印出所选单选按钮的值,然后在您单击该按钮时退出。我只需将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()

【讨论】:

    【解决方案2】:

    据我所知,与 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()
    

    当用户选择适当的代码时,代码会打印“创建”和“编译” 单选选项。

    希望这会有所帮助。

    问候,

    普拉桑特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2019-07-10
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多