Python 在单独的类中创建tkinter按钮

Python 在单独的类中创建tkinter按钮,python,tkinter,Python,Tkinter,我正在用Python 3.4制作我的第一个真正的Tkinter应用程序。我用Tkinter做了一些简单的事情,但没有比这更先进的了 我的程序的一部分是有一个窗口,它有两个按钮,一个在两边,中间有一个图片。按钮将在图片中向左和向右导航 我希望我的按钮能够通过一个单独的类NavButton来创建,这样我的代码就更有条理,更容易阅读,就像问题中的图片一样 基本上,我想说: self.left_button = NavButton(self, ">") 或者类似于创建 class NavBut

我正在用Python 3.4制作我的第一个真正的Tkinter应用程序。我用Tkinter做了一些简单的事情,但没有比这更先进的了

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

我希望我的按钮能够通过一个单独的类NavButton来创建,这样我的代码就更有条理,更容易阅读,就像问题中的图片一样

基本上,我想说:

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


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

您的
NavButton
是一个框架。我会做一个按钮,这就是你想要的,不是吗?更改此项:

class NavButton(Tk.Frame):

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

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

非常感谢!我试着把它做成一个按钮,但没有用。。因为它是tk.Button类的子类,所以我只调用父类的构造函数?
class NavButton(Tk.Button):
super().__init__(self, **options)