-1

我正在使用 Python 和 PIL

简短版
我想在背景中显示一个图像(据Label我所知,它只适用于 s ?)每个小部件Label现在都有这个master。我还想稍后添加Label带有绑定功能的小部件(以所说的为主)。

当我单击 时Button,除了新创建的小部件之外的每个小部件都会消失(下面的简单代码)。

问题
是否有防止这种情况的命令,或者Label我可以使用 s 的替代品,或者是否有帖子已经解决了这个问题?

长版
我正在用 Python 编写 Monopoly。我的设计包括一个从两个小部件共享的框架。使用 aButton您可以在这些小部件之间切换。为了使设计更舒适且更具视觉吸引力,其中一个小部件 (a Label) 具有木桌的背景。创建时,所有内容都按原样放置,但是当我按 aButton将小部件添加到我的二维Frame Matrix(在Label小部件上)时,Label除了新创建的小部件之外的所有内容都会消失。当再次忘记Label调用它时,一切都应该(使用新小部件)

由于我已经添加了很多东西Label,重新加载Label将不是一个选项,延迟将是显着的。我以前遇到过两次这个问题,但总是设法以某种方式解决它。虽然现在遇到此问题 3 次,但我自己或在 Internet 上都找不到任何解决此问题的方法……相信我,我搜索过(或者用错误的关键字搜索,我不知道。)

如果我的目标尚不明确:我想将小部件添加到一个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()
4

1 回答 1

0

解决方案:帆布

好吧,我不知何故完全忘记了画布,使用 Canvas 就可以正常工作。很抱歉,我在发布之前没有考虑清楚......这是我第一次使用 python(并没有让它变得更好),我设法只使用标签和框架来构建我的项目(所以我只考虑标签和寻找解决方案的框架)。对不起。我仍然会回答你的问题。(我希望当我在这里回答他们时这没问题?)

  1. 是的,我该开始了!我正处于我认为更新代码的时间会更好地完成它的地步。

2.谢谢!是的,我应该搜索得更好!

3.简单的代码显示相同的问题:当将一个小部件添加到标签(带有事件)时,以标签为主的所有其他小部件都消失了。至少这发生在我的屏幕上。如果需要我可以添加图片

4.我的沟通可能很糟糕:在拆解我的代码后,我发现问题出在标签(不是图像)上。与带有图像的标签相同的问题,我只有一个标签。这就是为什么我认为向您展示一个只有标签的示例(称为大型机)会更简单

感谢您编辑我的帖子以使其更具视觉吸引力并修复我的语法!

于 2021-06-21T12:43:41.460 回答