我是 Tkinter 和 OOP 的新手。我一直试图让子类从父类继承一些方法,因为如果我不这样做,我会重复代码。但是我偶然发现了一个问题,可能是由于我对 Tkinter 和 OOP 的了解有限。
这是我的代码:(确实简化了,但足以解决完整构建中的问题):
main.py
const filteredUsers = this.state.users.filter((filuser) => {
return (
filuser.name.toLowerCase().includes(this.state.searchfield.toLowerCase()) ||
filuser.email.toLowerCase().includes(this.state.searchfield.toLowerCase())
);
});
app.py
from app import App
import tkinter as tk
if __name__ == "__main__":
root = tk.Tk()
root.title("Title")
root.minsize(300, 300)
App(root).pack(side="top", fill="both", expand=True)
root.mainloop()
form_parent.py
import tkinter as tk
from tkinter import ttk
from smalerscale.test import FormFill
class App(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
# notebook variable
self.notebook = ttk.Notebook(self)
self.note1 = FormFill(self)
self.notebook.add(self.note1, text='From')
self.notebook.pack()
test.py
import tkinter as tk
from tkinter import ttk
class FormParent(tk.Frame):
"""Form frame """
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.main_message = tk.Label(self, text="Some text").pack(fill='x', padx=50, pady=5)
def print_something(self):
print(self.main_message)
这是我得到的错误(打印出一些东西,但没有出现窗口):
import tkinter as tk
from tkinter import ttk
class FormFill(FormParent):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
super().__init__(self)
print("It works maybe!")
self.print_something()
我很确定我搞砸了 It works maybe!
None
Traceback (most recent call last):
File "C:/Users/kryst/PycharmProjects/covidForm/smalerscale/main.py", line 8, in <module>
App(root).pack(side="top", fill="both", expand=True)
File "C:\Users\kryst\PycharmProjects\covidForm\smalerscale\app.py", line 17, in __init__
self.notebook.add(self.note1, text='Formulář')
File "C:\Users\kryst\Anaconda3\lib\tkinter\ttk.py", line 844, in add
self.tk.call(self._w, "add", child, *(_format_optdict(kw)))
_tkinter.TclError: can't add .!app.!formfill.!formfill as slave of .!app.!notebook
和一些属性,但我找不到一种方法来使它正确并正常工作。
如果有任何帮助,我将不胜感激。