Tkinter中的一个组合框,一个按钮和两页

时间:2018-08-06 05:52:41

标签: python-3.x tkinter

这是有关同一问题的修订过的帖子。我想使用tkinter在框架(FrameFour)中添加一个按钮,当在组合框中选择某个值时,该按钮打开页面。例如,如果选择了1并单击了按钮,则应该打开frameOne,如果选择了两个并单击了按钮,则应该打开frameTwo。我对FrameFour拥有的代码如下

class PageFour(tk.Frame):

def __init__(self, parent,controller):
    tk.Frame.__init__(self,parent)

    self.InitUI()

def nextButton(self,controller):
    if self.mychoice.get()=='1':
        controller.show_frame(PageTwo)

def InitUI(self):
    self.mychoice=StringVar()

    self.combo = ttk.Combobox(self,width =15, textvariable=self.mychoice)
    self.combo['values']=(" ","1","2")
    self.combo.grid(column=1, row=0)
    self.label=ttk.Label(self, text="How many files do you want to Process?")
    self.label.grid(column=0, row=0)


    self.button=ttk.Button(self, text="Next",command=self.nextButton)
    self.button.grid(column=1, row=1)

app = GUI_ATT() app.mainloop()

但是现在我在运行代码时收到错误消息“ TypeError:nextButton()缺少1个必需的位置参数:'controller'”。所有其他页面均正常运行,并且可以正确链接。 请让我知道是否需要更多信息。

欢呼

1 个答案:

答案 0 :(得分:0)

您已经有了Button和命令,无需再次进行设置。试试这个:

class PageFour(tk.Frame):
    def __init__(self, parent,controller):
        tk.Frame.__init__(self,parent)
        self.controller = controller
        self.InitUI()

    def nextButton(self):
        if self.mychoice.get()=='1':
            self.controller.show_frame(PageTwo)

    def InitUI(self):
        self.mychoice=StringVar()

        self.combo = ttk.Combobox(self,width =15, textvariable=self.mychoice)
        self.combo['values']=(" ","1","2")
        self.combo.grid(column=1, row=0)
        self.label=ttk.Label(self, text="How many files do you want to Process?")
        self.label.grid(column=0, row=0)


        self.button=ttk.Button(self, text="Next",command=self.nextButton)
        self.button.grid(column=1, row=1)