3

我有一个 tkinter 窗口,我通过创建一个带有 PhotoImage 实例的标签小部件(通过标签属性引用图像实例)来提供背景图片。

但是,当我运行脚本并将主窗口移动到开始菜单下方(我使用的是 Windows 10)或从屏幕两侧移过哪怕一刻时,打包到标签(带背景图片)上的所有小部件都会完全消失

他们只有在用鼠标悬停在他们身上时才会回来(有点)。背景图片也保留并继续填满屏幕。会不会是背景图片标签被“解除”了,看起来小部件正在消失?如果是这样,我怎样才能防止这种情况发生?

我现在找到的解决方法是不使用带有 PhotoImage 的标签作为父“框架”,而是使用只有背景颜色的典型 Frame 小部件,但这并不理想。

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

在将主窗口移动到开始菜单下方之前和之后的此屏幕截图中,请查看我的意思。

4

0 回答 0