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()
...
所以我将这段代码分为两个不同的模块。第一个,称为 '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()
...