0
我對python和tkinter相當陌生,但給出下面的小示例代碼爲什麼標籤「Hello ???」重疊被認爲是其父母的筆記本標籤。PYTHON3:標籤與筆記本中的標籤重疊
我的假設是筆記本電腦是標籤的父母會導致行0和列0(包含Frame)成爲筆記本主體本身的左上角,但它似乎不是父母,而不是self.root似乎是作爲父對象傳遞的對象的父DESPITE筆記本。
將標籤網格屬性設置爲row = 1,column = 0沒有(根據我的理解)正確地解決了問題,因爲0行沒有任何內容,因此摺疊爲無。爲行= 1,列= 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:在Page
#!/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
對不起,我對Python還很陌生,你能否詳細說一下「這不是這些類被設計成如何工作的」。我已upvoted和標記爲答案,因爲改變self.root = Frame(self)在Page.py修復了這個問題(同時,完全刪除self.root,只是使用自己也解決了這個問題) – Akidi
@Akidi:這個'課程設計是充當一個完全獨立的單元。當它在父級創建一個小部件時,它不再是獨立的。 –