My aim is to open on the same window when the button is pressed. But when I run the program, it opens in 2 windows at the same time.
I want it to open when the button is pressed.
How can I do it?
import tkinter as tk from tkinter import messagebox master = tk.Tk() uruns = tk.Tk() master.geometry("300x300") uruns.geometry("300x300") def buttonCallback(): mas = master.Label(uruns, text="Urunler listesi") mas.pack() urunler = tk.Button(master, text="Click", command=buttonCallback) label_1 = tk.Label(master, text="Bolat Aktar ürün yönetim sistemi") # Use the grid geometry manager to put the widgets in the respective position label_1.grid(row=0, column=0) urunler.grid(row=1, column=0) # The application mainloop tk.mainloop()
Advertisement
Answer
Your Problem is pretty easy.
you cant do twice Tk()
in your code and any tkinter code should be have one Tk()
.
so if you want to make another window you will need Toplevel()
it’s the same as Tk()
.
so there are 2 methods to do this:
Method 1 make a Toplevel()
in the function:
so you want to open a new window with that button right ? and you dont want to run twice windows in the beginning.
delete your
uruns = tk.Tk()
in your function
buttonCallBack
do this:
def buttonCallBack: uruns = tk.Toplevel() uruns .geometry("300x300") mas = tk.Label(uruns, text="Urunler listesi") mas .pack()
the full code:
import tkinter as tk from tkinter import messagebox master = tk.Tk() master.geometry("300x300") def buttonCallback(): uruns = tk.Toplevel() uruns .geometry("300x300") mas = Label(uruns, text="Urunler listesi") mas .pack() urunler = tk.Button(master, text="Click", command=buttonCallback) label_1 = tk.Label(master, text="Bolat Aktar ürün yönetim sistemi") # Use the grid geometry manager to put the widgets in the respective position label_1.grid(row=0, column=0) urunler.grid(row=1, column=0) # The application mainloop master.mainloop()
Method 2(the best) show/hide your another window Toplevel()
:
to show your Toplevel()
use Toplvel.deiconify()
to hide your Toplevel()
use Toplvel.withdraw ()
so do this:
import tkinter as tk from tkinter import messagebox master = tk.Tk() uruns = tk.Toplevel() uruns .withdraw() # Hide the second window uruns .geometry("300x300") master .geometry("300x300") def buttonCallback(): uruns .deiconify() # Show the second window mas = tk.Label(uruns, text="Urunler listesi") mas .pack() urunler = tk.Button(master, text="Click", command=buttonCallback) label_1 = tk.Label(master, text="Bolat Aktar ürün yönetim sistemi") # Use the grid geometry manager to put the widgets in the respective position label_1.grid(row=0, column=0) urunler.grid(row=1, column=0) # The application mainloop master.mainloop()