Как открыть второе окно из отдельного файла?
Запускаются сразу два окна. Другие варианты варианты 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).
Таким же образом вы можете импортировать и другие файлы из которых будете вызывать нужные вам функции.

