Tkinter:如何设置 ttk.Radiobutton 激活并获取其值?

Posted

技术标签:

【中文标题】Tkinter:如何设置 ttk.Radiobutton 激活并获取其值?【英文标题】:Tkinter: How to set ttk.Radiobutton activated and get its value? 【发布时间】:2013-09-13 12:41:25 【问题描述】:

1) 我需要设置我的三个 ttk.Radiobuttons 之一默认激活 当我启动我的 gui 应用程序时。 我该怎么做?

2) 我还需要检查我的 ttk.Radiobuttons 之一是否是 被用户激活/点击。 我该怎么做?

rb1 = ttk.Radiobutton(self.frame, text='5', variable=self.my_var, value=5)
rb2 = ttk.Radiobutton(self.frame, text='10', variable=self.my_var, value=10)
rb3 = ttk.Radiobutton(self.frame, text='15', variable=self.my_var, value=15)
self.rb1.grid(row=0)
self.rb2.grid(row=1)
self.rb3.grid(row=2)

【问题讨论】:

如果这些答案对您有所帮助,请将其标记为答案,这将有助于减少“未回答的问题”行 【参考方案1】:

我只是在 Gogo 的答案中添加一些内容,但我无法发表评论,因为我没有足够的声誉。

在单选按钮之前添加self.my_var=tk.IntVar(),否则您的程序将不知道该变量。更多信息请参见The Variable Classes

例如,在我的情况下,我需要一个 StringVar(): 这适用于 python 3.* 将 tkinter 更改为 Tkinter 对于 python 2(我不是 100% 确定)

import tkinter as tk
from tkinter import ttk

class XFile_Page(tk.Frame):
    ...

    self.joinType = tk.StringVar()
    self.rbLeft = ttk.Radiobutton(self.frameRadioButtons, text='left', variable=self.joinType, value='left',command=self.RadioBtnSelected)
    self.rbRight = ttk.Radiobutton(self.frameRadioButtons, text='right', variable=self.joinType, value='right',command=self.RadioBtnSelected)

    self.rbLeft.grid(row=0)
    self.rbRight.grid(row=1)

    #select the rbLeft radiobutton
    self.rbLeft.invoke()

    def RadioBtnSelected(self):
        print(self.joinType.get())

【讨论】:

【参考方案2】:

关于你的第一个问题,一个方便直接的方法是调用invoke方法:

rb2.invoke()

请注意,这也会运行与此按钮关联的任何 command

请参阅Ttk::radiobutton invoke documentation。

【讨论】:

这非常有用!!【参考方案3】:

您可以使用rb1.state['selected'] 将默认设置为rb1self.my_var.get() 以获取单选按钮的值(即文本变量)。

【讨论】:

【参考方案4】:

使用self.my_var.set(1) 将单选按钮设置为text='5' 作为默认单选按钮。

要获得选中的,你必须调用一个函数

rb1 = ttk.Radiobutton(self.frame, text='5', variable=self.my_var, value=5,command=self.selected)
rb2 = ttk.Radiobutton(self.frame, text='10', variable=self.my_var, value=10,command=self.selected)
rb3 = ttk.Radiobutton(self.frame, text='15', variable=self.my_var, value=15,command=self.selected)
self.rb1.grid(row=0)
self.rb2.grid(row=1)
self.rb3.grid(row=2)

def selected(self):
     if self.my_var.get()==5:
        "do something"
     elif self.my_var.get()==10:
        "do something"
     else:
        "do something"

【讨论】:

也许这种情况自 2013 年以来发生了变化,但要获得 text='5',您应该使用 self.my_var_set(5) - 这是您用于激活的单选按钮的值。无论如何 - 你的例子在 2021 年仍然有用 ;-)

以上是关于Tkinter:如何设置 ttk.Radiobutton 激活并获取其值?的主要内容,如果未能解决你的问题,请参考以下文章

python tkinter如何设置组件在窗口中的位置,比如说一个按钮,我希望这个按钮在窗口的左边,上边………

Tkinter:如何设置 ttk.Radiobutton 激活并获取其值?

python 用Tkinter.Text设置了文本框之后如何获取输入内容

Tkinter 如何正确设置组合框滚动条的样式

如何设置 Python tkinter 画布元素的 z 索引?

tkinter的text如何获取和设置内容