在簡(jiǎn)單地嘗試組織我的代碼時(shí),我在網(wǎng)上發(fā)現(xiàn),在需要時(shí)將大部分代碼放入類(lèi)中似乎是最好的。因此,在這樣做的過(guò)程中,我認(rèn)為我將嘗試創(chuàng)建一個(gè) with 和 方法。frame classcreate_labelscreate_buttons我的目標(biāo)是能夠創(chuàng)建2個(gè)或更多個(gè)風(fēng)格相似的獨(dú)立框架(因此,為什么我發(fā)現(xiàn)最好制作一個(gè)框架類(lèi))。然后,使用方法創(chuàng)建標(biāo)簽,按鈕和其他小部件,并允許它們?cè)诟髯缘目蚣軆?nèi)輕松移動(dòng)。這是我的代碼:import tkinter as tkwindow = tk.Tk()class MyFrame(tk.Frame): def __init__(self, parent, **kwargs): tk.Frame.__init__(self, parent) self.parent = parent self.layout(**kwargs) def labels(self, text, **kwargs): tk.Label.__init__(self, text=text) self.layout(**kwargs) def buttons(self, text, command, **kwargs): tk.Button.__init__(self, text=text, command=command) self.layout(**kwargs) def layout(self, row=0, column=0, columnspan=None, row_weight=None, column_weight=None, color=None, sticky=None, ipadx=None, padx=None, ipady=None, pady=None): self.grid(row=row, column=column, columnspan=columnspan, sticky=sticky, ipadx=ipadx, padx=padx, ipady=ipady, pady=pady) self.grid_rowconfigure(row, weight=row_weight) self.grid_columnconfigure(column, weight=column_weight) self.config(bg=color)frame_1 = MyFrame(window, row=0, column=0, sticky="news", color="pink")frame_1.buttons("Btn_1/Frme_1", quit, row=0, column=0)frame_1.buttons("Btn_2/Frme_1", quit, row=0, column=1)frame_2 = MyFrame(window, row=1, column=0, sticky="news", color="green")frame_2.buttons("Btn_1/Frme_2", quit, row=0, column=0)frame_2.buttons("Btn_2/Frme_2", quit, row=0, column=1)window.grid_columnconfigure(0, weight=1)window.grid_columnconfigure(1, weight=1)window.grid_rowconfigure(1, weight=1)window.grid_rowconfigure(0, weight=1)window.mainloop()現(xiàn)在我認(rèn)為我的一個(gè)問(wèn)題是在期間,因?yàn)槊繋瑧?yīng)該有2幀和2個(gè)按鈕。但是,沒(méi)有錯(cuò)誤,這使得很難確定這就是為什么只存在最新的按鈕和框架的原因。我甚至不認(rèn)為這是一個(gè)框架或小部件“覆蓋”另一個(gè)框架或小部件的情況。我認(rèn)為第二幀/小部件似乎覆蓋了第一幀/小部件。__init__ method任何幫助是值得贊賞的。
1 回答
開(kāi)滿(mǎn)天機(jī)
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
問(wèn)題出在您的函數(shù)上。兩個(gè)幀都在 和 上進(jìn)行,因?yàn)槟鷽](méi)有將任何特定的行和列傳遞給函數(shù)。因此,可以看到幀的覆蓋。layoutgridrow=0column=0
代碼中的另一個(gè)問(wèn)題(可能)是 and 按鈕不屬于小部件,而是屬于根frame_1frame_2Framewindow
添加回答
舉報(bào)
0/150
提交
取消
