Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter OOP布局配置_Python_Oop_Tkinter_Layout - Fatal编程技术网

Python Tkinter OOP布局配置

Python Tkinter OOP布局配置,python,oop,tkinter,layout,Python,Oop,Tkinter,Layout,我正在尝试用tkinter构建一个应用程序。 布局在没有OO原则的情况下工作,但我很难理解如何将其移动到OO 布局如下图所示。(1280x720px) 我有以下资料: 顶部带有用户名/欢迎信息的横幅,右角有徽标,columnspan=8 左侧带有按钮的菜单栏,分为两行(第1行:第6行,第2行:第4行) 工作区(白色块)有一个框架,我将在其中添加一个笔记本,每个菜单按钮打开一个不同的笔记本页面 制作此OO的最佳方法是什么?(我仍在学习,对OO来说非常陌生)没有直接的翻译,因为一切都取决于你

我正在尝试用tkinter构建一个应用程序。 布局在没有OO原则的情况下工作,但我很难理解如何将其移动到OO

布局如下图所示。(1280x720px)


我有以下资料:

  • 顶部带有用户名/欢迎信息的横幅,右角有徽标,columnspan=8
  • 左侧带有按钮的菜单栏,分为两行(第1行:第6行,第2行:第4行)
  • 工作区(白色块)有一个框架,我将在其中添加一个笔记本,每个菜单按钮打开一个不同的笔记本页面

制作此OO的最佳方法是什么?(我仍在学习,对OO来说非常陌生)

没有直接的翻译,因为一切都取决于你的需要。 如果你创建一个简单的程序,你可以创建类,创建每个按钮,标签,框架。。。在构造函数中。创建时,必须选择布局管理器网格、打包或放置中的一个。然后创建函数,就完成了。如果你处理更大的项目,并且有大量的标签、按钮等。。您可能需要为每个容器创建容器。 在您的情况下,您不需要很多功能和按钮,因此您可能需要使用基本方法:

from tkinter import *

class name_gui:
    def __init__(self, top):

#specify main window

        self.top = top
        self.title = top.title("name_gui")
        self.minsize = top.geometry("1280x720")
        self.resizable = top.resizable(height=False,width=False)

#create buttons,Labels,Frames..

        self.Button1 = Button(top,text="Button1",command=self.exa_fun)
        self.Button2 = Button(top,text="Button2",command=self.exa_fun2)

#place them, choose grid/place/pack

        self.Button1.place(relx=0.5,rely=0.5)
        self.Button2.place(relx=0.5,rely=0.2)


#create your functions
    
    def exa_fun(self):
        pass

    def exa_fun2(self):
        pass


top = Tk()
exa_gui = name_gui(top)
top.mainloop()

如果您想将代码从面向过程更改为面向对象,并且认为有一种神奇的方法可以避免编写新代码,那么您就错了。我的建议是,让你的工作考试保持原样。就因为它有效。在学习OOP时,您可以通过复制和粘贴来翻译代码。它仍然需要一些努力,但当你把工作示例搞砸时,你不会生气。最好的方法是先真正学习
OOP
,然后再翻译它。谢谢你,这很有效,我的尝试使我在某个地方犯了一个错误,一直在打开一个双窗口。这很有效。谢谢你,不客气。以下是您需要的一切: