为了账号安全,请及时绑定邮箱和手机立即绑定

在类框架内创建多个小部件

在类框架内创建多个小部件

森栏 2022-08-25 15:50:16
在简单地尝试组织我的代码时,我在网上发现,在需要时将大部分代码放入类中似乎是最好的。因此,在这样做的过程中,我认为我将尝试创建一个 with 和 方法。frame classcreate_labelscreate_buttons我的目标是能够创建2个或更多个风格相似的独立框架(因此,为什么我发现最好制作一个框架类)。然后,使用方法创建标签,按钮和其他小部件,并允许它们在各自的框架内轻松移动。这是我的代码: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()现在我认为我的一个问题是在期间,因为每帧应该有2帧和2个按钮。但是,没有错误,这使得很难确定这就是为什么只存在最新的按钮和框架的原因。我甚至不认为这是一个框架或小部件“覆盖”另一个框架或小部件的情况。我认为第二帧/小部件似乎覆盖了第一帧/小部件。__init__ method任何帮助是值得赞赏的。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

问题出在您的函数上。两个帧都在 和 上进行,因为您没有将任何特定的行和列传递给函数。因此,可以看到帧的覆盖layoutgridrow=0column=0

代码中的另一个问题(可能)是 and 按钮不属于小部件,而是属于根frame_1frame_2Framewindow


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 57 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信