PILでPythonを使用しています
短いバージョン:
バックグラウンドで画像を表示したい (Label私の知る限り、これは s でのみ機能しますか?) すべてのウィジェットには、これLabelがmaster. 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()