【问题标题】:How to set default value of radio button using TKinter in a class?如何在类中使用 TKinter 设置单选按钮的默认值?
【发布时间】:2021-11-14 09:43:28
【问题描述】:

我正在尝试使用 TKinter 和 Python 设置单选按钮的默认值。这是我第一次使用它,所以我很新。我的理解是,在我的例子中,默认值应该设置为第二个单选按钮(value=1)。

from tkinter import *
from tkinter import ttk

class RadioButtons:


    def __init__(self, root):
        self.root = root
        self.jobNum = IntVar(value=1)
        self.create()

    def create(self):
        content = ttk.Frame(self.root)
        
        radioButtons = ttk.LabelFrame(content, borderwidth=5, relief="ridge", width=400, height=400, text="Radio Buttons")
        radioButtonsLbl=ttk.Label(radioButtons, text="Buttons")

        # radio buttons
        jobType1 = ttk.Radiobutton(radioButtons, text="Button 0", variable= self.jobNum, value=0)
        jobType2 = ttk.Radiobutton(radioButtons, text="Button 1", variable= self.jobNum, value=1)
        jobType3 = ttk.Radiobutton(radioButtons, text="Button 2", variable= self.jobNum, value=2)

        content.grid(column=0, row=0)


        # add to grid
        radioButtons.grid(column=0, row=0, columnspan=3, rowspan=3)
        radioButtonsLbl.grid(column=0, row=5, padx=20, pady=5, sticky=W)
        jobType1.grid(column=1, row=5, padx=20, pady=0, sticky=W)
        jobType2.grid(column=1, row=6, padx=20, pady=0, sticky=W)
        jobType3.grid(column=1, row=7, padx=20, pady=0, sticky=W)


root = Tk()
RadioButtons(root)
root.mainloop()

但是在运行程序时没有选择单选按钮。 (screenshot of program)

调试器确认self.jobNum的值设置正确。(screenshot of debugger)

如何设置默认值?在创建和添加单选按钮之前和之后,我尝试了很多事情,包括self.jobNum.set(),但无济于事。 我在这里想念什么?这是某种范围问题吗?

【问题讨论】:

    标签: python tkinter radio-button


    【解决方案1】:

    我怀疑这与 python 的垃圾收集器有关。我可以通过保存对RadioButtons(root) 的引用来解决问题:

    root = Tk()
    rb = RadioButtons(root)
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2020-08-10
      • 1970-01-01
      • 2020-05-05
      • 2013-03-27
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      相关资源
      最近更新 更多