我想創建一個程式,我可以在其中使用 classes 創建一個主視窗并且它是多個 toplevels 。但是,當我運行下面給出的代碼時,它會創建“多個主視窗和多個頂層”而不是“一個主視窗和多個頂層”。任何人都可以請推薦我我該怎么做?
from tkinter import *
class tk_window:
def __init__(self, root, exit_button):
self.root = root
self.exit_button = exit_button
self.root = Tk()
self.root.geometry('500x500')
self.exit_button = Button(self.root, text='EXIT', command=self.root.destroy)
self.exit_button.place(x=0, y=0)
Label(self.root, text='Vk').place(x=100, y=100)
class tk_toplevel(tk_window):
def __init__(self, top_level, root, exit_button):
super().__init__(root, exit_button)
self.top_level = top_level
self.exit_button = exit_button
self.top_level = Toplevel(self.root)
self.exit_button = Button(self.top_level, text='EXIT', command=self.top_level.destroy)
self.exit_button.place(x=0, y=0)
root2 = tk_toplevel('top_level1', 'root', 'exit_button1')
root3 = tk_toplevel('top_level2', 'root', 'exit_button2')
root4 = tk_toplevel('top_level3', 'root', 'exit_button3')
root5 = tk_toplevel('top_level4', 'root', 'exit_button4')
root1 = tk_window('root', 'exit_button')
root1.root.mainloop()
uj5u.com熱心網友回復:
您會獲得多個主視窗,因為您的頂級繼承自主視窗。因此,每個 的實體tk_toplevel 都是一個 tk_window,并且還創建了一個 的實體Toplevel。
如果您不想要多個tk_window,請不要創建繼承自它的類。相反,只需繼承自然Toplevel后不創建單獨的實體Toplevel
class tk_toplevel(Toplevel):
def __init__(self, top_level, root, exit_button):
super().__init__(root, exit_button)
self.top_level = top_level
self.exit_button = exit_button
self.exit_button = Button(self, text='EXIT', command=self.destroy)
self.exit_button.place(x=0, y=0)
此外,您應該傳入實際的根視窗,而不是與根視窗名稱相同的字串。
root2 = tk_toplevel('top_level1', root, 'exit_button1')
root3 = tk_toplevel('top_level2', root, 'exit_button2')
root4 = tk_toplevel('top_level3', root, 'exit_button3')
root5 = tk_toplevel('top_level4', root, 'exit_button4')
與所問的問題無關,您應該閱讀PEP8命名指南。這將使您的代碼更容易理解。對于您的代碼,這意味著以大寫字符開頭您的類名。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/392615.html
標籤:特金特
上一篇:PowerShell:需要在檔案內容中放入檔案具體名稱
下一篇:夜班員工出勤(不同日期)
