【问题标题】:Getting tkinter RadioButtons to update a variable using a function/command is not working [duplicate]让 tkinter RadioButtons 使用函数/命令更新变量不起作用 [重复]
【发布时间】:2020-04-01 18:11:16
【问题描述】:

我正在尝试使用函数从单选按钮选择中更新变量:

from tkinter import *

root = Tk()

var1 = StringVar(value = 'rb0')
var2 = StringVar(value = 'rb0')

def fnc1(x):
    var2.set(x)
    return

Radiobutton(root, text = 'rb1', variable = var1, value = 'rb1', command = fnc1('rb1')).pack()
Radiobutton(root, text = 'rb2', variable = var1, value = 'rb2', command = fnc1('rb2')).pack()
Radiobutton(root, text = 'rb3', variable = var1, value = 'rb3', command = fnc1('rb3')).pack()

Label(root, textvariable = var1).pack()
Label(root, textvariable = var2).pack()

root.mainloop()

第一个标签使用普通方法可以正常工作,但第二个标签 (var2) 即使在第一次打开代码时也总是显示“rb3”(甚至没有选中任何按钮?)。

如何获取代码来更新第二个变量以及第一个变量?

【问题讨论】:

  • 谢谢!适用于更新!

标签: python tkinter radio-button


【解决方案1】:

Tkinter thingys 基本上不喜欢函数的输入,所以你必须使用 lambda。

将您的代码更新为:

from tkinter import *

root = Tk()

var1 = StringVar(value = 'rb0')
var2 = StringVar(value = 'rb0')

def fnc1(x):
    var2.set(x)
    return

Radiobutton(root, text = 'rb1', variable = var1, value = 'rb1', command = lambda: fnc1('rb1')).pack()
Radiobutton(root, text = 'rb2', variable = var1, value = 'rb2', command = lambda: fnc1('rb2')).pack()
Radiobutton(root, text = 'rb3', variable = var1, value = 'rb3', command = lambda: fnc1('rb3')).pack()

Label(root, textvariable = var1).pack()
Label(root, textvariable = var2).pack()

root.mainloop()

【讨论】:

    猜你喜欢
    • 2016-04-21
    • 2018-01-24
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多