为什么Tkinter为我的按钮创建一个新窗口?

问题描述 投票:1回答:2

我正在尝试将按钮添加到我的窗口中,但是它为该按钮创建了一个新窗口,如何将其添加到我有背景的同一窗口中?

from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter import messagebox
from PIL import ImageTk

top = Tk()

C = Canvas(top, bg ="blue", height=1920, width=1080)
filename = ImageTk.PhotoImage(file = "C:/Users/plapl/Desktop/ching.jpg")
background_label = Label(top, image=filename)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
C.pack()


root = Tk()

myButton = Button(root, text = "Add a task")
myButton.pack()

root.mainloop()
python python-3.x tkinter pycharm
2个回答
1
投票

这是因为您为Tk()创建了一个新实例。更改为:

from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter import messagebox
from PIL import ImageTk

top = Tk()

C = Canvas(top, bg ="blue", height=1920, width=1080)
filename = ImageTk.PhotoImage(file = "C:/Users/plapl/Desktop/ching.jpg")
background_label = Label(top, image=filename)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
C.pack()

myButton = Button(top, text = "Add a task")
myButton.pack()

root.mainloop()

0
投票

这是因为您有2 Tk()对象,这意味着将创建2个窗口。要解决此问题,请将行:background_label = Label(top, image=filename)更改为此:background_label = Label(root, image=filename)

然后,您可以删除此行:top = Tk(),因为不再需要它。

© www.soinside.com 2019 - 2024. All rights reserved.