我有一个tkinter窗口,通过创建带有PhotoImage实例的 Label小部件(通过标签属性引用图像实例)来给背景图片。
但是,当我运行脚本并将主窗口移动到“开始”菜单下方(使用Windows 10的情况下)时,或者甚至在屏幕两侧移动了片刻时,所有小部件都打包好了(带有背景图片)完全消失。
它们似乎只是在用鼠标悬停在它们上方时才返回(某种程度上)。此外,背景图片仍然保留并继续填充屏幕。可能是背景图片“标签”被“抬起”并且看起来像小部件正在消失吗?如果是这样,如何防止这种情况发生?
我现在发现的解决方法是不使用带有PhotoImage的Label作为父“框架”,而是使用仅具有背景色的典型“框架”小部件,但这并不理想。
import tkinter as tk
root = tk.Tk()
root.geometry('600x350+600+300')
root.resizable(width=False, height=False)
boxBg = '#666'
frameBg = '#fff'
#problem method
backgroundImg = tk.PhotoImage(file='program_media/background.png')
bgFrame = tk.Label(root, image=backgroundImg)
bgFrame.image = backgroundImg
#less than ideal solution so far
#bgFrame = tk.Frame(root, bg='#fff')
bgFrame.pack(expand=1, fill=tk.BOTH)
mainFrame = tk.Frame(bgFrame)
mainFrame.pack(side=tk.TOP)
title = tk.Label(mainFrame, text='Test String')
title.pack(side=tk.TOP)
#widget creation code packed within mainFrame
#...
#... All these widgets (including mainFrame above) are disappearing
#...
#end of widget creation code
root.mainloop()
在将主窗口移动到开始菜单下方之前和之后的screenshot中,了解我的意思。