我在Python 3.4中创建了我的第一个真正的Tkinter应用程序。我用Tkinter做了一些简单的事情,但没有像这个先进的东西。
我的程序的一部分是有一个窗口,有两个按钮,每侧一个,中间有一个图片。按钮将向左和向右导航图片。
我希望我的按钮能够通过单独的类NavButton创建,因此我的代码更有条理,更容易阅读,就像问题Best way to structure a tkinter application中的这张图片一样。
基本上我想说:
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)
简而言之,我如何为我的按钮使用单独的类?
答案 0 :(得分:2)
您的NavButton
是一个框架。我会把它做成一个按钮,这就是你想要的,不是吗?改变这个:
class NavButton(Tk.Frame):
到
class NavButton(Tk.Button):
此外,您应该调用父初始值设定项:
super().__init__(self, **options)