Один из способов сделать это - скрыть корневое окно, используя окно верхнего уровня, а затем обновить это окно. Это позволяет нам много сгущать.
import tkinter as tk
def second_window():
root.withdraw()
top = tk.Toplevel(root)
top.geometry("400x400+200+200")
entry = tk.Entry(top, width=15)
entry.place(x=30,y=30)
def actions():
x = entry.get()
entry.destroy()
btn.destroy()
tk.Label(top, text=x).place(x=20,y=20)
btn = tk.Button(top, text="Send", command=actions)
btn.place(x=80, y=80)
if __name__ == "__main__":
root = tk.Tk()
root.geometry("200x200+100+100")
tk.Button(root, text="Test button", command=second_window).place(x=50, y=50)
root.mainloop()
Лично я предпочитаю подход ООП, и это облегчает управление в будущем.
import tkinter as tk
class Example(tk.Tk):
def __init__(self):
super().__init__()
self.geometry("200x200+100+100")
self.btn = tk.Button(self, text="Test button", command=self.update_window)
self.btn.place(x=50, y=50)
def update_window(self):
self.geometry("400x400+200+200")
self.entry = tk.Entry(self, width=15)
self.entry.place(x=30,y=30)
self.btn.config(text="Send", command=self.actions)
self.btn.place(x=80, y=80)
def actions(self):
tk.Label(self, text=self.entry.get()).place(x=20,y=20)
self.btn.destroy()
self.entry.destroy()
if __name__ == "__main__":
Example().mainloop()
Это сказало, что вам, вероятно, не нужно использовать место. Вы сможете получить необходимый вам вид от grid()
или pack()
, как только научитесь правильно их использовать.