【问题标题】:OOP on Tkinter (connect classes)Tkinter 上的 OOP(连接类)
【发布时间】:2016-01-28 01:02:35
【问题描述】:

我正在尝试使用 tkinter 学习 OOP。我想创建两个类,一个用于主框架,另一个用于简单标签,然后使用 OOP 方法将标签网格到框架。

类似...

import tkinter as tk

class main_frame(tk.Frame):

    def __init__(self, *args, **kwargs):

        tk.Frame.__init__(self)

class label1(tk.Label):

    def __init__ (self, *args, **kwargs):

        tk.Label.__init__(self)
        #label = tk.Label(main_frame, text='lol')???

root = tk.Tk()
main_frame(root).grid(row = 0, column = 0)
#label1(main_frame).grid(row=1,column=0) ???
root.mainloop()

与正确的 OOP 方法相比,我的代码可能没有任何意义。感谢您的帮助。

【问题讨论】:

  • 您的问题是什么?您正在努力解决问题的哪一部分?
  • 有什么问题?您收到错误消息吗?你有什么问题吗?

标签: python oop python-3.x tkinter


【解决方案1】:

main_frame 小部件需要是 Tk 窗口的子窗口,然后 label1 小部件需要是 main_frame 窗口小部件的子窗口。这是我的解决方案:

import tkinter as tk

class main_frame(tk.Frame):

    def __init__(self, master, *args, **kwargs):

        tk.Frame.__init__(self, master)
        self.label = label1(self)
        self.label.grid(row = 0, column = 0)

class label1(tk.Label):

    def __init__ (self, master, *args, **kwargs):

        tk.Label.__init__(self, master, text="test")

root = tk.Tk()
root.mainframe = main_frame(root)
root.mainframe.pack()
root.mainloop()

注意每个小部件如何将自己作为master 传递给其他小部件。

【讨论】:

    猜你喜欢
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2019-04-11
    • 2020-09-22
    • 2015-08-25
    相关资源
    最近更新 更多