我正在使用 Python 和 PIL
短版:
我想在背景中显示一个图像(据我所知,它只适用于 Label
?)
每个小部件现在都将这个 Label
作为 master
。
我还想稍后添加带有绑定函数的小部件(以 Label
作为主控)。
当我点击 Button
时,除了新创建的小部件之外的所有小部件都消失了
(下面是简单的代码)。
问题:
是否有命令可以防止这种情况,
或者有没有我可以使用的 Label
的替代品,
或者是否有帖子已经解决了这个问题?
长版:
我正在用 Python 编写大富翁。我的设计包括一个由两个小部件共享的框架。使用 Button
,您可以在这些小部件之间切换。
为了使设计更舒适且更具视觉吸引力,其中一个小部件(Label
)具有木桌背景。创建时,一切都按原样放置,但是当我按 Button
将小部件添加到我的二维 Frame
Matrix
(在 Label
小部件上)时, Label
上的所有内容,但新创建的小部件消失了。
当忘记 Label
再次调用它时,一切都应该如此(使用新小部件)
由于我已经在此 Label
中添加了许多内容,因此无法选择重新加载 Label
,因此延迟会很大。
我以前遇到过这个问题两次,但总是设法以某种方式解决它。
虽然现在遇到这个问题 3 次,但我从来没有找到任何解决这个问题的方法,我自己或在互联网上……相信我,我搜索过(或用错误的关键字搜索,我不知道。)
如果我的目标还不清楚:
我想将小部件添加到 Label
(或其他支持图像的小部件),只要我希望(事件)没有此 Label
的所有其他子(小部件)消失。
下面的代码是一个非常简单的代码,用于向您展示我的问题的示例。 我的程序的实际代码有超过 2K 行,而且我的代码不是很容易看,所以我不会包括它。
from tkinter import*
import tkinter as tk
class Oberflaeche:
def __init__(self, main):
self.mainframe = Label(main,height= 1000,width = 1000, bg='azure4' )
self.mainframe.pack()
self.array1 = []
# To resemble it (for me):
for k in range(5):
array2 = []
self.array1.append(array2)
for i in range(11):
array2.append(Frame(self.mainframe, height=120, width=80, bg='red'))
self.array1[k][i].grid(row=k, column=i, pady=(5, 5), padx=(1, 1))
# Just for visual purpose:
for n in range(3):
aLabel = Label(master=self.array1[n][n],bg = 'blue')
aLabel.pack()
aLabel.bind('<Button-1>', self.show)
# Something I want to add:
def show(self,event):
Label1 = Label(self.array1[2][3], bg = 'yellow')
Label1.pack()
main = tk.Tk()
Oberflaeche = Oberflaeche(main)
main.mainloop()
答案 0 :(得分:0)
解决方案:画布
好吧,我以某种方式完全忘记了画布,使用 Canvas 效果很好。很抱歉,我在发布之前没有考虑清楚......这是我第一次使用 python(并没有让它变得更好),我设法只使用标签和框架来构建我的项目(所以我只考虑了标签和框架)寻找解决方案的框架)。 我很抱歉。我还是要回答你的问题。 (希望我在这里回答他们时没问题?)
2.谢谢!是的,我应该搜索得更好!
3.简单的代码显示同样的问题: 将小部件添加到 Label(带有事件)时,所有其他带有主标签的小部件都会消失。至少这发生在我的屏幕上。 如果需要我可以加图片
4.我可能传达了那么糟糕的信息:在拆解我的代码后,我发现问题出在标签(不是图像)上。我在带有图像的标签上遇到的同样问题,我只有一个标签。这就是为什么我认为向您展示一个只有一个标签(称为大型机)的示例会更简单
感谢您编辑我的帖子以使其更具视觉吸引力并修正我的语法!