【问题标题】:Why does Tkinter make a new window for my button?为什么 Tkinter 为我的按钮创建一个新窗口?
【发布时间】:2020-09-18 03:21:56
【问题描述】:

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

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


    【解决方案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()
    

    【讨论】:

    • 它摆脱了第二个窗口,但由于某种原因它没有添加按钮
    • 尝试在按钮中添加命令参数。例如:myButton = Button(top, text = "添加任务", command=quit)
    【解决方案2】:

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

    然后,你可以去掉这行:top = Tk(),因为它不再需要了。

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多