Как открыть второе окно из отдельного файла?

Запускаются сразу два окна. Другие варианты варианты if __name__ == "__main__" не дают нужного, в другом варианте не запускаются вовсе.

main.py:

from tkinter import *
import new


root=Tk()
root.geometry('100x100')
root.title('test')

btm = Button(text='New', command=new)
btm.pack()

root.mainloop()

new.py:

from tkinter import *


new_win=Tk()
new_win.title("new")
new_win.geometry("100x100")

def open():   
    lbl=Label(new_win, text=('label new win'))
    lbl.pack()

       
if __name__ == "__main__":
    open()
    new_win.mainloop()

Запускаются сразу два окна


Ответы (2 шт):

Автор решения: S. Nick

Как вариант:

main.py:

from tkinter import *
from new import open


root = Tk()
root.geometry('200x300')
root.title('MainWindow')

btm = Button(root, text='open NewWindow', command=open) 
btm.pack()

root.mainloop()

new.py:

from tkinter import *


def open():   
    window = Toplevel()
    window.title("NewWindow")
    window.geometry("300x100")
    
    lbl=Label(window, text=('Label new Window'))
    lbl.pack()

введите сюда описание изображения

→ Ссылка
Автор решения: Dmitry B

Как написал S.Nick вам нужно импортировать файл new.py в ваш основной код. Можно сделать import new, но тогда придется каждый раз для вызова функции писать new.open.

Или сделать, как показал S.Nick from new import open тогда вы именно функцию импортируете и можете без указания библиотеки вызвать функцию.

Например: btm = Button(root, text='open NewWindow', command=open).

Таким же образом вы можете импортировать и другие файлы из которых будете вызывать нужные вам функции.

→ Ссылка