【问题标题】:Default radio button not working in second tkinter window默认单选按钮在第二个 tkinter 窗口中不起作用
【发布时间】:2020-01-30 22:18:51
【问题描述】:

我试图在 tkinter 的辅助窗口上放置一些单选按钮,但我无法正确设置要选择的默认按钮。奇怪的是,如果我将按钮放在根窗口上,代码似乎可以正常工作,而不是任何其他窗口。

这是我的代码:

from tkinter import *

root = Tk()

def radiobtnwindow():
    window2 = Toplevel()

    y_n = StringVar()
    y_n.set('N')
    #y_n.set('Y')

    r1 = Radiobutton(window2, text='Yes', variable=y_n, value='Y').pack()
    r2 = Radiobutton(window2, text='No', variable=y_n, value='N').pack()

btn = Button(root, text='click', command=radiobtnwindow).pack()

root.mainloop()

请帮忙!

【问题讨论】:

  • 您的 StringVar 仅由局部变量引用,该变量在函数结束时消失 - 使 RadioButtons 无法存储其状态。

标签: python tkinter


【解决方案1】:

只需将变量放在函数外部,将它们从函数内部全局化,即可解决您的问题。

像这样:

from tkinter import *

root = Tk()

y_n = StringVar()
y_n.set('N')
# y_n.set('Y')


def radiobtnwindow():
    global y_n

    window2 = Toplevel()

    r1 = Radiobutton(window2, text='Yes', variable=y_n, value='Y').pack()
    r2 = Radiobutton(window2, text='No', variable=y_n, value='N').pack()


btn = Button(root, text='click', command=radiobtnwindow).pack()

root.mainloop()

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 2019-05-07
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2014-05-06
    • 1970-01-01
    相关资源
    最近更新 更多