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中为类创建多个选项卡_Python_Oop_Tkinter_Tkinter Layout - Fatal编程技术网

Python 如何在tkinter中为类创建多个选项卡

Python 如何在tkinter中为类创建多个选项卡,python,oop,tkinter,tkinter-layout,Python,Oop,Tkinter,Tkinter Layout,我正在尝试为tkinter中的每个类创建选项卡。但他们面临着一个问题,那就是他们互相依赖 我已经尝试为Notebook创建一个新类,但结果是一样的。现在我停在这个变体上 从tkinter导入* 从tkinter导入ttk 类应用程序(ttk.Frame): 定义初始(自我,主): ttk.Frame.\uuuuu初始化(自,主) self.master=master self.mainframe=ttk.Frame(主控,填充=10 15') self.mainframe.grid(列=0,行=

我正在尝试为tkinter中的每个类创建选项卡。但他们面临着一个问题,那就是他们互相依赖

我已经尝试为Notebook创建一个新类,但结果是一样的。现在我停在这个变体上

从tkinter导入*
从tkinter导入ttk
类应用程序(ttk.Frame):
定义初始(自我,主):
ttk.Frame.\uuuuu初始化(自,主)
self.master=master
self.mainframe=ttk.Frame(主控,填充=10 15')
self.mainframe.grid(列=0,行=0,粘性=N+S+W+E)
self.connectionCheck()
self.connectionConf()
self.measurename()
self.meas()
self.logview()
self.running=无
#它还有其他功能。但我认为这并不是真的必要
类Mapframe(ttk.Frame):
定义初始(自我,主):
ttk.Frame.\uuuuu初始化(自,主)
self.master=master
self.mapframe=ttk.Frame(主控,填充=10 15')
self.mapframe.grid(列=0,行=0,粘性=N+W+E+S)
self.choosefiles()
self.meas()
window=Tk()
笔记本=ttk.笔记本(窗口)
tab1=应用程序(笔记本)
tab2=地图框(笔记本)
notebook.add(tab1,text='tab1')
notebook.add(tab2,text='tab2')
notebook.grid(行=0,列=0)
notebook.mainloop()
notebook.quit()
所以,就像我说的,他们彼此躺着。程序启动时,标签甚至不显示


Upd:将
master
更改为
self
后,当创建从
框架继承的类时,为了保存其他小部件,一条基本规则是所有子小部件都应该是该类的子部件

就你而言,你没有这么做。您正在创建一个笔记本,向笔记本添加框架,但每个框架内的小部件都被设置为根窗口的子窗口。它们必须是帧的子帧(例如:
self

您需要定义
self.mainframe
self.mapframe
如下示例所示。请注意,将
self
而不是
master
用作第一个参数:

self.mainframe = ttk.Frame(self, padding='10 10 15 15')
...
self.mapframe = ttk.Frame(self, padding='10 10 15 15')

当调用
ttk.Frame.\uuu init\uuuu(self,master)
时,您应该使用
master
作为小部件的父级。在其他任何时候,您都不应该将小部件放在
master

中,将
ttk.Frame(master,
更改为
ttk.Frame(self,
我试过了,不起作用。我试过将
master
更改为
self
。现在我看到了选项卡,但两个框架仍然靠在一起。@D53E:为您的问题添加一个图像,以显示结果。@stovfl我添加了image@D53E:同样的错误:你没有遵循答案中描述的“基本规则”。