Проблема с Tkinter и созданием нового окна

#python #tkinter

#питон #tkinter

Вопрос:

Я совсем новичок в Tkinter и пытаюсь создать новое окно с помощью этого скрипта, сохраняя при этом текущее окно, но я получаю сообщение об ошибке _init_() missing 1 required positional argument: 'parent' . Я не совсем уверен, в чем причина, но я предполагаю, что командная функция для моей кнопки работает не так, как я хочу. В настоящее время скрипт выглядит примерно так:

 from tkinter import simpledialog
from tkinter import *

class Additional(simpledialog.Dialog):
    def body(self, master):
#input fields
        Label(master, text="Picture 3 Path:").grid(row=1)

#input fields for tags
#add as needed
        self.e1 = Entry(master)

        self.e1.grid(row=1, column=1, ipadx=150)

        return self.e1 # initial focus

    def apply(self):
        first = self.e1.get()

        self.ttag1 = (first)

class Initial(simpledialog.Dialog):
    def body(self, master):
#input fields for username and passwords
        Label(master, text="Usernames:").grid(row=1),

        self.e1 = Entry(master)

        self.b1 = Button(master, text = "Add More", bg= 'grey', command= Additional)
        self.b1.grid(row=6, column=2, ipadx=75)

        self.e1.grid(row=1, column=1, columnspan=2, ipadx=50)

        return self.e1 # initial focus

    def apply(self):
        first = self.e1.get()

        self.tag1 = (first)


root = tk.Tk()
root.withdraw()
d = Initial(root)

toor = tk.Tk() 
toor.withdraw()
 

Я пытался изменить его, но, похоже, он работает неправильно. Есть какие-нибудь идеи?

Ответ №1:

При вызове Additional класса с помощью команды button вы не указываете, каким должен быть родительский корень, и поэтому класс не запускается. Вы можете решить это, передав с master помощью лямбда

 self.b1 = Button(master, text="Add More", bg='grey', command=lambda: Additional(master))