python:为用户输入定义基本 tkinter class,但在子 class 中添加标签:缺少位置参数 self

python: defining a base tkinter class for user input but adding labels in a sub class: missing positional argument self

所以我将这段代码分为两个不同的模块。第一个,称为 'GUIs',我想在其中存储所有 TKINTER 代码,然后另一个在我称为 GUI 的地方。

因为我正在为其他模块使用该基础,所以我正在考虑添加一个子类,该子类将添加 2 个带有文本的标签供用户阅读,并且不会干扰其他模块的基础 GUI。问题是它不起作用。

它告诉我 'add_labels()' 缺少 1 个必需的位置参数:'self'.

希望得到一些帮助。我正在复制以下 2 个代码:

# GUIs module
import tkinter as tk

class pbt_GUI(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.title("Manual Input")
        self.resizable(0,0)
        # create widgets
        self.frame = tk.Frame(self, width=300, height=300)
        self.GUI_date = tk.Label(self.frame, text='Date (mm/dd/yyyy):').grid(row=0, sticky='w')
        self.GUI_date_input = tk.Entry(self.frame)
        self.submit = tk.Button(self.frame, text="Submit")
        # widgets layout
        self.frame.grid()
        self.GUI_date_input.grid(row=0, column=1)
        self.submit.grid(row=5)

        self.username = tk.Label(self.frame, text='username: bla')
        self.password = tk.Label(self.frame, text='password: bla**')

    def add_labels(self):
        self.username.grid(row=3)
        self.password.grid(row=4)

然后是另一个模块:

# module where executed
from datetime import datetime
import generalUse.GUIs

date_input = ('')

def get_man_input():
    global date_input

    date_input = datetime.strptime(UI_GUI.GUI_date_input.get(), '%m/%d/%Y')
    date_input.strftime('%Y/%m/%d').date
    UI_GUI.destroy()


# Button set up for executing the GUI:
UI_GUI = generalUse.GUIs.pbt_GUI.add_labels()
UI_GUI.submit['command'] = get_man_input
UI_GUI.mainloop()

非常感谢您

您需要创建 pbt_GUI 的实例并使用此实例调用 add_labels():

...
UI_GUI = generalUse.GUIs.pbt_GUI() # create instance of pbt_GUI
UI_GUI.add_labels()
...