Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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
PYTHON3:笔记本中的标签重叠选项卡_Python_User Interface_Tkinter_Tabs - Fatal编程技术网

PYTHON3:笔记本中的标签重叠选项卡

PYTHON3:笔记本中的标签重叠选项卡,python,user-interface,tkinter,tabs,Python,User Interface,Tkinter,Tabs,我对python和tkinter还比较陌生,但鉴于下面的小示例代码,为什么标签“Hello???”与笔记本标签重叠,而笔记本标签应该是它的父标签 我的假设是,作为标签父对象的笔记本将导致第0行和第0列(包含框架)成为笔记本正文本身的左上角,但它似乎不是父对象,而是self.root似乎是父对象,尽管笔记本是作为父对象传递的对象 将标签网格属性设置为row=1,column=0(我的理解是正确的)并不能解决问题,因为第0行中没有任何内容,因此会折叠为零。同样出于同样的原因,将note设置为row=

我对python和tkinter还比较陌生,但鉴于下面的小示例代码,为什么标签“Hello???”与笔记本标签重叠,而笔记本标签应该是它的父标签

我的假设是,作为标签父对象的笔记本将导致第0行和第0列(包含框架)成为笔记本正文本身的左上角,但它似乎不是父对象,而是self.root似乎是父对象,尽管笔记本是作为父对象传递的对象

将标签网格属性设置为row=1,column=0(我的理解是正确的)并不能解决问题,因为第0行中没有任何内容,因此会折叠为零。同样出于同样的原因,将note设置为row=1、column=0似乎也没有任何作用。将页面框架设置为行=1,列=0也是如此

任何帮助都将不胜感激

App.py:

#!/usr/bin/env python

from tkinter import Tk;
from tkinter.ttk import Frame, Notebook;
from page import Page;

class Application(Frame):
    def __init__(self, parent):
        super().__init__(parent);
        self.root = parent;
        self.root.geometry("450x450+500+500");
        self.root.rowconfigure(0, weight=1);
        self.root.columnconfigure(0, weight=1);
        self.root.grid();

        note = Notebook(self.root);

        page = Page(note, "pageOne");

        note.add(page, text="Page One");

        note.grid(sticky="NSEW"); #r=0, c=0 of main window


def main():
    root = Tk();
    Application(root);
    root.mainloop();

if __name__ == '__main__':
    main();
Page.py:

#!/usr/bin/env python

from tkinter.ttk import Frame, Label;

class Page(Frame):
    def __init__(self, parent, name):
        super().__init__(parent);
        self.root = Frame(parent);
        self.name = name;
        self.root.grid(); #r=0, c=0 of notebook interior? 

        Label(self.root, text="Hello???").grid(); #r=0, c=0 also of notebook interior frame

页面中的所有内容都必须在该页面中。您正在父目录中创建
self.root
。这不是这些类设计的工作方式。将该行更改为:

self.root = Frame(self)

尽管如此,我认为没有必要使用
self.root
,因为
self
已经是一个
Frame
页面中的所有内容都必须在页面中。您正在父目录中创建
self.root
。这不是这些类设计的工作方式。将该行更改为:

self.root = Frame(self)

尽管如此,我不认为有必要使用
self.root
,因为
self
已经是一个
Frame

对不起,我对Python还是很陌生的,你能详细说明一下“这些类的设计目的不是这样的”吗。我已经投票并标记为答案,因为在Page.py中更改self.root=Frame(self)修复了这个问题(同时,完全删除self.root并仅使用self也修复了这个问题)@Akidi:This
Page
类被设计成一个完全独立的单元。当它在父级中创建一个小部件时,它不再是自包含的。很抱歉,我对Python还是很陌生的,您能否详细说明一下“这些类不是这样设计的”。我已经投票并标记为答案,因为在Page.py中更改self.root=Frame(self)修复了这个问题(同时,完全删除self.root并仅使用self也修复了这个问题)@Akidi:This
Page
类被设计成一个完全独立的单元。当它在父级中创建小部件时,它不再是自包含的。