DayLy
DayLy

Reputation: 39

Problem with Tkinter and creating a new window

I am quite new with Tkinter and am trying to create a new window using this script while keeping the current window but i am get the error _init_() missing 1 required positional argument: 'parent'. I am not really sure what the reason is but I am assuming that the command function for my button isn't working the way I want it. The script currently looks something like this:

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()

I have tried changing it up but it seems that it's not working right. Any ideas?

Upvotes: 1

Views: 93

Answers (1)

oskros
oskros

Reputation: 3285

When calling the Additional class through the button command, you are not specifying what the parent root should be, and therefore the class fails to initiate. You can solve this by passing the master using a lambda

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

Upvotes: 1

Related Questions