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