我遇到的问题是相同的图像(在标签中)将不会显示,除了最终的标签。这是一张图片,告诉你我的意思。在这张图片中,我生成了7张卡片,然后生成了2张。我希望空白处用问号填充。
可创建的卡的最大数量范围为0-8。如果我生成6张卡片,然后生成4张卡片,我希望卡片5-6变成随机卡片图像。在
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
这是创建窗口后我的代码的顶部。每个标签与我要显示的图像都正确显示。比如这里:
每次按下按钮,卡片都会被选中并显示出来。此代码也会运行。我也尝试过将标签设置为randomCard.createLabel(root)但是同样的事情发生了。在
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)
如果你需要更多的信息,我很乐意提供。我尽力提供所有必要的信息。在
Tkinter只允许每个映像实例使用一次。要多次显示同一图像,需要为每个标签分别加载图像。在
例如,如果要将同一图像显示5次,则需要运行如下代码:
显然,这只是一个例子,并没有在代码中使用变量名或类。在
相关问题 更多 >
编程相关推荐