在单独的类中创建一个tkinter按钮

时间:2015-05-17 17:34:12

标签: python tkinter

我在Python 3.4中创建了我的第一个真正的Tkinter应用程序。我用Tkinter做了一些简单的事情,但没有像这个先进的东西。

我的程序的一部分是有一个窗口,有两个按钮,每侧一个,中间有一个图片。按钮将向左和向右导航图片。

我希望我的按钮能够通过单独的类NavButton创建,因此我的代码更有条理,更容易阅读,就像问题Best way to structure a tkinter application中的这张图片一样。

enter image description here

基本上我想说:

self.left_button = NavButton(self, ">")

或类似的东西来创建

class NavButton():

对象。

然后用

打包
self.left_button.pack()

我正在努力实现如何在不同的班级中设置按钮。它一直说'AttributeError:'NavButton'对象没有属性'tk' “

到目前为止,这是我的代码:

import tkinter as tk

class MainWindow(tk.Frame):
    def __init__(self, master):
        frame = tk.Frame(master)
        frame.pack(fill="both", expand = True)

        self.left_button = NavButton(frame, ">")
        self.left_button.pack(side='left', fill='y')

class NavButton(tk.Frame):
    def __init__(self, master, icon):
        self.nav_button = tk.Button(master, text=icon, width=25)


root = tk.Tk()
root.title("Viewer")
root.geometry('1000x600')
app = MainWindow(root)
root.mainloop()

我的问题可能来自我创建按钮的方式吗?

tk.Frame.__init__(self, parent, ...)

VS

self.frame = tk.Frame(parent)

简而言之,我如何为我的按钮使用单独的类?

1 个答案:

答案 0 :(得分:2)

您的NavButton是一个框架。我会把它做成一个按钮,这就是你想要的,不是吗?改变这个:

class NavButton(Tk.Frame):

class NavButton(Tk.Button):

此外,您应该调用父初始值设定项:

super().__init__(self, **options)