单选按钮修改微调框 Python 中的增量值

Posted

技术标签:

【中文标题】单选按钮修改微调框 Python 中的增量值【英文标题】:Radiobutton modifying increment values in spinbox Python 【发布时间】:2013-12-24 13:59:17 【问题描述】:

我正在尝试使用TkinterPython 2.7 中创建一个GUI。我需要我的Spinbox 中的增量值相应地更改为从Radiobutton 中选择的值。我尝试了不同的方法,但到目前为止还没有成功。我附上了部分不起作用的代码。如果有人能提出解决方案,我真的很感激。谢谢!

class Frequency_Window(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent)    
        self.parent = parent        
        self.initUI()

    def initUI(self):
        global var_increment
        self.var_x = IntVar()
        self.self_value  = IntVar()
        self.freq_Hz = IntVar()

        self.parent.title("Test")
        self.pack(fill=BOTH, expand=1)

        self.columnconfigure(1, weight=1)
        self.columnconfigure(1, pad=7)
        self.rowconfigure(5, weight=1)
        self.rowconfigure(5, pad=7)

        self.var_x.set("1")

        label_RadioButton = ttk.Label(self,
                                      justify=LEFT, 
                                      text="Increments")

        label_RadioButton.grid(sticky=N+W+S+E, 
                               pady=4,
                               padx=5, 
                               row=0,
                               column=1)                                

        R1 = ttk.Radiobutton(self, 
                             text="1", 
                             variable=self.var_x,
                             command=self.set_increment,
                             value=1)

        R1.grid(sticky=NW,
                row=1,
                column=1,
                pady=5)

        R10 = ttk.Radiobutton(self, 
                              text="10", 
                              variable=self.var_x,
                              command=self.set_increment, 
                              value=10)

        R10.grid(sticky=NW,
                 row=2,
                 column=1,
                 pady=5)

        R100 = ttk.Radiobutton(self, 
                               text="100", 
                               variable=self.var_x,
                               command=self.set_increment,
                               value=100)
        R100.grid(sticky=NW,
                  row=3,
                  column=1,
                  pady=5)

        var_freq_Hz = Spinbox(self,
                              textvariable=self.freq_Hz, 
                              font=("Calibri",30),
                              justify="right",
                              bd=0,
                              bg='black',
                              fg='white', 
                              from_=0,
                              to=999, 
                              increment=self.var_x.get(),
                              width=4, 
                              relief=FLAT,
                              buttonbackground='black')
        var_freq_Hz.grid(sticky=N+W+S+E,
                         row=1,
                         column=0, 
                         columnspan=1,
                         rowspan=1, 
                         padx=5)

    def set_increment(self):
        selection = "You selected the option " + str(self.var_x.get())
        print selection
        return 

【问题讨论】:

【参考方案1】:

您好,我刚刚找到了方法。我必须更改class 中可用的对象,将其添加到self。从此:

var_freq_Hz = Spinbox(self,
                          textvariable=self.freq_Hz, 
                          font=("Calibri",30),
                          justify="right",
                          bd=0,
                          bg='black',
                          fg='white', 
                          from_=0,
                          to=999, 
                          increment=self.var_x.get(),
                          width=4, 
                          relief=FLAT,
                          buttonbackground='black')
    var_freq_Hz.grid(sticky=N+W+S+E,
                     row=1,
                     column=0, 
                     columnspan=1,
                     rowspan=1, 
                     padx=5)

到这里:

 self.var_freq_Hz = Spinbox(self,
                          textvariable=self.freq_Hz, 
                          font=("Calibri",30),
                          justify="right",
                          bd=0,
                          bg='black',
                          fg='white', 
                          from_=0,
                          to=999, 
                          width=4, 
                          relief=FLAT,
                          buttonbackground='black')
    self.var_freq_Hz.grid(sticky=N+W+S+E,
                     row=1,
                     column=0, 
                     columnspan=1,
                     rowspan=1, 
                     padx=5)

然后在调用函数中,我使用了configure选项来改变increment的值,如下:

def set_increment(self):
    selection = "You selected the option " + str(self.var_x.get())
    self.var_freq_Hz.config(increment = self.var_x.get())
    print selection
    return 

现在它可以正常工作了。但是,如果有人想出一个更 Pythonic 的解决方案,我们将不胜感激!干杯!

【讨论】:

以上是关于单选按钮修改微调框 Python 中的增量值的主要内容,如果未能解决你的问题,请参考以下文章

Axure:切换单选按扭,控制界面显示不同内容

共享首选项中的单选按钮和微调器?

如何获得单选按钮的价值?

如何在微调器中更改单选按钮颜色

在从单选组中选择单选按钮时设置变量值

C#单选按钮测验[重复]