-1

PILでPythonを使用しています

短いバージョン:
バックグラウンドで画像を表示したい (Label私の知る限り、これは s でのみ機能しますか?) すべてのウィジェットには、これLabelmaster. Labelまた、バインドされた関数を使用して、後で (マスターと言って) ウィジェットを追加したいと考えています。

をクリックするとButton、新しく作成されたものを除くすべてのウィジェットが消えます (以下の単純なコード)。

質問:
これを防ぐためのコマンドはありますかLabel、または使用できる s の代替手段はありますか、またはこの問題に対処する投稿は既にありますか?

長いバージョン:
Python でモノポリーをプログラミングしています。私のデザインには、2 つのウィジェットから共有されるフレームが含まれています。を使用するButtonと、これらのウィジェットを切り替えることができます。デザインを快適で視覚的に魅力的にするために、これらのウィジェットの 1 つ (a Label) の背景には木製のテーブルがあります。作成すると、すべてが本来の位置に配置されますが、a を押してButtonウィジェットを 2 次元Frame Matrix(Labelウィジェット上) に追加すると、新しく作成されたウィジェット以外のすべてLabelが消えます。もう一度呼び出すのを忘れるLabelと、すべてが正常になります(新しいウィジェットを使用)

これにはすでに多くのことを追加しているためLabel、リロードはLabelオプションではありません。遅延は非常に大きくなります。私は以前にこの問題に2回遭遇しましたが、常に何とか回避することができました. この問題を 3 回経験しましたが、この問題の解決策を自分で、またはインターネットで見つけることはできませんでした...検索した (または間違ったキーワードで検索した、わかりません)。

私の目標がまだ明確でない場合: これの他のすべての子 (ウィジェット) が消えるLabelことなく (イベント) 必要なときはいつでも、ウィジェット (または画像をサポートする他のウィジェット) にウィジェットを追加したいと考えています。Label

以下のコードは、私の問題の例を示す非常に単純なコードです。私のプログラムの実際のコードは 2,000 行を超えており、コーディングは見やすいものではないため、含めません。

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