私が抱えている問題は、最終ラベルを除いて同じ画像(ラベル内)が表示されないことです。ここに私が何を意味するかを示す写真があります。この写真では、私は7枚のカードを生成し、次に2を生成しました。空白のスペースを疑問符で埋めることを望みます。 Tkinter最後の1枚を除いて同じ画像が見えない画像ラベル
作成できるカードの最大数は0〜8です。 6枚のカードを生成して4枚のカードを生成すると、カード5-6をランダムなカード画像に戻すことができます。
randomUnknown = Card("RANDOM", PATH + '\\random-unknown.png', 'N/A', 'N/A')
#Note: randomUnknown is in a separate file. The card.randomUnknown just calls it
randomCard = card.randomUnknown
card1 = randomCard
card2 = randomCard
card3 = randomCard
card4 = randomCard
card5 = randomCard
card6 = randomCard
card7 = randomCard
card8 = randomCard
card1Label = card1.createLabel(root)
card2Label = card2.createLabel(root)
card3Label = card3.createLabel(root)
card4Label = card4.createLabel(root)
card5Label = card5.createLabel(root)
card6Label = card6.createLabel(root)
card7Label = card7.createLabel(root)
card8Label = card8.createLabel(root)
ウィンドウが作成された後、これが私のコードの先頭にある
import tkinter as tk
from PIL import Image, ImageTk
class Card:
def __init__(self, name, imageURL, cardType, rarity):
self.name = name
self.imageURL = imageURL
self.cardType = cardType
self.rarity = rarity
def __repr__(self):
print(self.name)
def __str__(self):
return self.name
def returnImage(self):
self.timage = Image.open(self.imageURL)
if not self.timage.size == (212,263):
self.timage = self.timage.resize((212,263), Image.ANTIALIAS)
self.tphoto = ImageTk.PhotoImage(self.timage)
return self.tphoto
def createLabel(self, parent):
self.timage = Image.open(self.imageURL)
if not self.timage.size == (212,263):
self.timage = self.timage.resize((212,263), Image.ANTIALIAS)
self.tphoto = ImageTk.PhotoImage(self.timage)
self.cardLabel = tk.Label(parent, image = self.tphoto)
self.cardLabel.image = self.tphoto
return self.cardLabel
メインカードCLASS。それぞれのラベルは、私が表示しようとしている画像で正しく表示されます。だからここのように:![At the Start](https://i.stack.imgur.com/9S5i2.png)
私の試み
ボタンが押されるたびに、カードを採取し、表示されます。このコードも実行されます。私もrandomCard.createLabel(ルート)にラベルを設定しようとしましたが、同じことが起こりました。
def randomizeButton():
global currentCards,card1Label, card2Label,card3Label,card4Label,card5Label,card6Label,card7Label,card8Label
currentCards = maxCards
setMax()
randomizeCards()
print('Current Cards: ' + str(currentCards))
if(maxCards == 0):
card1Label.configure(image = randomCard.returnImage())
card2Label.configure(image = randomCard.returnImage())
card3Label.configure(image = randomCard.returnImage())
card4Label.configure(image = randomCard.returnImage())
card5Label.configure(image = randomCard.returnImage())
card6Label.configure(image = randomCard.returnImage())
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 1):
card2Label.configure(image = randomCard.returnImage())
card3Label.configure(image = randomCard.returnImage())
card4Label.configure(image = randomCard.returnImage())
card5Label.configure(image = randomCard.returnImage())
card6Label.configure(image = randomCard.returnImage())
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 2):
card3Label.configure(image = randomCard.returnImage())
card4Label.configure(image = randomCard.returnImage())
card5Label.configure(image = randomCard.returnImage())
card6Label.configure(image = randomCard.returnImage())
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 3):
card4Label.configure(image = randomCard.returnImage())
card5Label.configure(image = randomCard.returnImage())
card6Label.configure(image = randomCard.returnImage())
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 4):
card5Label.configure(image = randomCard.returnImage())
card6Label.configure(image = randomCard.returnImage())
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 5):
card6Label.configure(image = randomCard.returnImage())
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 6):
card7Label.configure(image = randomCard.returnImage())
card8Label.configure(image = randomCard.returnImage())
if(maxCards == 7):
card8Label.configure(image = randomCard.returnImage())
ラベルはグリッドに設定されています。
card1Label.grid(row = 0, column = 0)
card2Label.grid(row = 0, column = 1)
card3Label.grid(row = 0, column = 2)
card4Label.grid(row = 0, column = 3)
card5Label.grid(row = 1, column = 0)
card6Label.grid(row = 1, column = 1)
card7Label.grid(row = 1, column = 2)
card8Label.grid(row = 1, column = 3)
これ以上情報が必要な場合は、私はそれを提供することがうれしいです。私はすべての必要な情報を提供しようとしました。
コード全体を入れることができますか?私はどれくらいのファイルを取得していません...あなたが望むものを簡単に説明することができますか? –
@ GiovanniGianni私は「?」というラベルを取得したいと思います。それらの中には、上の写真のすべての空白に表示されます。今のところ、画像は最後のラベルにのみ表示されます。全体のコードは約700行程度です。私はこの問題がこれらのコードスニペットにあると確信しています。本気ですか?編集:約70の画像があります –
'randomCard.returnImage()'のコードを提供できますか?私はそれが原因である可能性があると思う... – StellarDoor5319