Python Tkinter,其他类上的函数

Python Tkinter,其他类上的函数,python,tkinter,Python,Tkinter,我想了解更多关于课堂的知识。我想看看布莱恩·奥克利的例子。但是现在我遇到了一个问题,我想创建一个简单的销毁函数(在工具栏中),但只会得到错误。或者我需要在主窗口中创建所有函数 import tkinter as tk from tkinter import ttk class MainWindow(tk.Tk): def __init__(self, bg="#1f2327", fg="#c4ddf4", *args, **kwargs):

我想了解更多关于课堂的知识。我想看看布莱恩·奥克利的例子。但是现在我遇到了一个问题,我想创建一个简单的
销毁
函数(在
工具栏
中),但只会得到错误。或者我需要在
主窗口中创建所有函数

import tkinter as tk
from tkinter import ttk


class MainWindow(tk.Tk):
    def __init__(self, bg="#1f2327", fg="#c4ddf4", *args, **kwargs):
        tk.Tk.__init__(self,  *args, **kwargs)
        self.geometry("1300x850")                                       # Window Options

        self.bg = bg
        self.fg = fg

        self.toolframe = Toolbar(bg=self.bg)                            # import classes and initialize
        self.navbar = Navbar(self)

        self.toolframe.toolframe.pack(ipady=5, fill="x")                # place the widgets from TOOL BAR
        self.navbar.navbar.pack(side="left", ipadx=40, fill="y")


class Toolbar(tk.Frame):                                                # toolbar class
    def __init__(self, bg=None, fg="#c4ddf4", hoverdark="#2b3036",
                 *args, **kwargs):
        tk.Frame.__init__(self,  *args, **kwargs)

        self.bg = bg
        self.fg = fg
        self.hoverdark = hoverdark

        self.toolframe = tk.Frame(bg=self.bg)                           # tool frame

        self.exitstyle = ttk.Style()                                    # set style for the exit button
        self.exitstyle.theme_use("clam")
        self.exitstyle.configure('EXIT.TButton', background=self.bg, foreground=self.fg, borderwidth=0,
                                 focuscolor="none", font=("Bahnschrift", 10), width=5)
        self.exitstyle.map('EXIT.TButton',
                           background=[("pressed", "red"), ("active", "#ff5353")]
                           )

        self.exitbutton = ttk.Button(self.toolframe,                    # exit button
                                     text="\u26CC",
                                     style='EXIT.TButton',
                                     command=self.closeApp  #<------------------------------HERE
                                     )

        self.toolstyle = ttk.Style()                                    # set style for min and max button
        self.toolstyle.theme_use("clam")
        self.toolstyle.configure('TOOL.TButton', background=self.bg, foreground=self.fg, borderwidth=0,
                                 focuscolor="none", font=("Bahnschrift", 10), width=5)
        self.toolstyle.map('TOOL.TButton',
                           background=[("pressed", "red"), ("active", self.hoverdark)]
                           )

        self.maximizebutton = ttk.Button(self.toolframe,                # maximize button
                                         text="\u2610",
                                         style="TOOL.TButton"
                                         )

        self.minimizebutton = ttk.Button(self.toolframe,                # minimize button
                                         text="\u268A",
                                         style="TOOL.TButton")

        self.exitbutton.pack(side="right", fill="y")                        # exit button pack
        self.maximizebutton.pack(side="right", fill="y")                    # maximize button pack
        self.minimizebutton.pack(side="right", fill="y")                    # minimize button pack

    def closeApp(self):             #<-----------------------------------------------HERE
        MainWindow.destroy(self)


class Navbar(tk.Frame):                                                        # navbar class
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        self.navbar = tk.Frame(bg="black")


if __name__ == "__main__":
    MainWindow()
    tk.mainloop()
将tkinter作为tk导入
从tkinter导入ttk
类主窗口(tk.tk):
定义初始值(self,bg=“#1f2327”,fg=“#c4ddf4”,*args,**kwargs):
tk.tk.\uuuuu初始化(self,*args,**kwargs)
self.geometry(“1300x850”)#窗口选项
self.bg=bg
self.fg=fg
self.toolframe=Toolbar(bg=self.bg)#导入类并初始化
self.navbar=navbar(self)
self.toolframe.toolframe.pack(ipady=5,fill=“x”)#从工具栏中放置小部件
self.navbar.navbar.pack(side=“left”,ipadx=40,fill=“y”)
类工具栏(tk.Frame):#工具栏类
def(self,bg=None,fg=“#c4ddf4”,hoverdark=“#2b3036”,
*args,**kwargs):
tk.Frame.\uuuu init\uuuuu(self,*args,**kwargs)
self.bg=bg
self.fg=fg
self.hoverdark=hoverdark
self.toolframe=tk.Frame(bg=self.bg)#工具架
self.exitstyle=ttk.Style()#设置退出按钮的样式
自我存在方式。主题使用(“蛤蜊”)
self.exitstyle.configure('EXIT.TButton',background=self.bg,front=self.fg,borderwidth=0,
focuscolor=“无”,font=(“Bahnschrift”,10),宽度=5)
self.exitstyle.map('EXIT.TButton',
背景=[(“按下”、“红色”)、(“活动”、“ff5353”)]
)
self.exitbutton=ttk.按钮(self.toolframe,#退出按钮
text=“\u26CC”,
style='EXIT.TButton',
command=self.closeApp#尝试使用以下方法:

将tkinter作为tk导入
从tkinter导入ttk
类主窗口(tk.tk):
定义初始值(self,bg=“#1f2327”,fg=“#c4ddf4”,*args,**kwargs):
tk.tk.\uuuuu初始化(self,*args,**kwargs)
self.geometry(“1300x850”)#窗口选项
self.bg=bg
self.fg=fg
self.toolframe=Toolbar(self,bg=self.bg)#导入类并初始化
self.navbar=navbar(self)
self.toolframe.toolframe.pack(ipady=5,fill=“x”)#从工具栏中放置小部件
self.navbar.navbar.pack(side=“left”,ipadx=40,fill=“y”)
类工具栏(tk.Frame):#工具栏类
def(self,window,bg=None,fg=“#c4ddf4”,hoverdark=“#2b3036”,
*args,**kwargs):
tk.Frame.\uuuu init\uuuuu(self,window,*args,**kwargs)
self.window=window#您可以使用'tk.Frame.\uuuu init\uuuuu'设置的'self.master'
self.bg=bg
self.fg=fg
self.hoverdark=hoverdark
self.toolframe=tk.Frame(self,bg=self.bg)#工具框架
self.exitstyle=ttk.Style()#设置退出按钮的样式
自我存在方式。主题使用(“蛤蜊”)
self.exitstyle.configure('EXIT.TButton',background=self.bg,front=self.fg,borderwidth=0,
focuscolor=“无”,font=(“Bahnschrift”,10),宽度=5)
self.exitstyle.map('EXIT.TButton',
背景=[(“按下”、“红色”)、(“活动”、“ff5353”)]
)
self.exitbutton=ttk.按钮(self.toolframe,#退出按钮
text=“\u26CC”,
style='EXIT.TButton',

command=self.closeApp#在创建
Toolbor
对象时,传递
main窗口
对象的引用,请尝试将代码减少到a。如果您的问题是关于调用
destroy
的按钮,我们只需要根窗口、按钮和稍多的代码即可使其工作。问题不是这样的这不仅仅是关于销毁(由于我的过错,下次我会更好地解释自己)。一般的问题是,我如何通过在其他类中使用此方法从一个类创建函数。在其他情况下,我可以处理它,但这种方法对我来说是新的。噢,哇…你是超级快速的xD。它帮助很大。以前从未使用过这种方法,我感到震惊…现在我用其他函数尝试了它,它工作正常。THX!@JoeMo没问题。还有我喜欢
工具栏
,所以我可能会复制那些Unicode字符(
\u26cc
\u2610
\u268a
)。我从来不知道它们的存在。如果你想要更多:。但我只知道如何在python中与“\u…”一起使用。我想在其他程序语言中你需要另一个字符串。但不是100%确定。我错过了一个“home symbol”,我总是使用\u2630,但“house symbol”看起来会更好:D.@JoeMo谢谢。我可能会用这些来改进。哦,我明白了。是的,也许会更好,但每个人都有不同的品味。对于我自己来说,当我有问题时,Unicode会更好,我想分享代码。我不需要用图像xD来强调其他人