8

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

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)
4

4 回答 4

21

use self.my_var.set(1) to set the radiobutton with text='5' as the default RadioButton.

To get the selected one you have to call a function

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-09-24T10:28:32.293 回答
12

至于您的第一个问题,一种方便直接的方法是调用该invoke方法:

rb2.invoke()

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

请参阅Ttk::radiobutton 调用文档

于 2014-10-16T09:17:28.793 回答
2

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

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

例如,在我的情况下,我需要一个 StringVar():这适用于 python 3.* 更改tkinterTkinter适用于 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())
于 2017-07-13T09:00:49.987 回答
1

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

于 2014-07-08T16:33:18.913 回答