使子类从 tkinter 中的父类继承方法

时间:2021-03-28 10:10:22

标签: python python-3.x oop tkinter

我是 Tkinter 和 OOP 的新手。我一直试图让子类从父类继承一些方法,因为如果我不这样做,我会重复代码。但是我偶然发现了一个问题,可能是由于我对 Tkinter 和 OOP 的了解有限。

这是我的代码:(确实简化了,但足以解决完整构建中的问题):

ma​​in.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 和一些属性,但我找不到一种方法来使它正确并正常工作。

如果有任何帮助,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

@JacksonPro 的有效答案

8.0
相关问题