当主窗口移离屏幕时,小部件就会消失

2024-09-27 18:07:14 发布

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

我有一个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()

在移动开始菜单下面的主窗口之前和之后,请看我在这个screenshot中的意思。在


Tags: 实例false屏幕部件tkinterroot标签pack

热门问题