我无法在tkinter程序中重定向

2024-06-16 10:45:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是在按下按钮时打开同一个窗口。但当我运行程序时,它会同时在两个窗口中打开

我想在按下按钮时把它打开

我怎么做

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()

Tags: thetextimportmastertkinter按钮labeltk
1条回答
网友
1楼 · 发布于 2024-06-16 10:45:15

你的问题很简单。 您不能在代码中执行两次Tk(),任何tkinter代码都应该有一次Tk()。 因此,如果您想创建另一个窗口,您将需要Toplevel(),它与Tk()相同。 因此,有两种方法可以做到这一点:

方法1在函数:

你想用这个按钮打开一个新窗口,对吗? 而且你不想一开始就运行两次windows

  1. 删除你的uruns = tk.Tk()

  2. 在函数buttonCallBack中,执行以下操作:

def buttonCallBack:
    uruns = tk.Toplevel()
    uruns .geometry("300x300")
    mas   = tk.Label(uruns, text="Urunler listesi")
    mas   .pack()

完整代码:

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()

方法2(最佳)显示/隐藏另一个窗口Toplevel():

要显示您的Toplevel(),请使用Toplvel.deiconify()

要隐藏您的Toplevel(),请使用Toplvel.withdraw ()

这样做:

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()

相关问题 更多 >