2011-12-28 93 views
0

这是我正在尝试显示图像的代码。 那么..首先应该有4张牌在屏幕上显示;然而,只有2. 我不知道为什么会发生这种情况。我真的需要帮助。Tkinter显示图像

def __init__(self): 
    Frame.__init__(self) 
    self.master.title("Black Jack") 
    blackjack = Blackjack() 
    self.grid() 

    self._playerCardImage = PhotoImage(file=str(blackjack._player._cards[0].fileName)) 
    self._playerCardLabel = Label(self, image = self._playerCardImage) 
    self._playerCardLabel.grid(row=0, column=0) 


    self._playerCardImage1 = PhotoImage(file=str(blackjack._player._cards[1].fileName)) 
    self._playerCardLabel1 = Label(self, image = self._playerCardImage1) 
    self._playerCardLabel1.grid(row=0, column=1) 

    self._dealerCardImage = PhotoImage(file=str(blackjack._dealer._cards[0].fileName)) 
    self._dealerCardImage = Label(self, image = self._dealerCardImage) 
    self._dealerCardImage.grid(row=0, column=2) 

    self._dealerCardImage1 = PhotoImage(file=str(blackjack._dealer._cards[1].fileName)) 
    self._dealerCardImage1 = Label(self, image = self._dealerCardImage1) 
    self._dealerCardImage1.grid(row=0, column=3) 

回答

4

你的第一个两行代码为第2卡:

self._playerCardImage = PhotoImage(file=str(blackjack._player._cards[0].fileName)) 
self._playerCardLabel = Label(self, image = self._playerCardImage) 
self._playerCardLabel.grid(row=0, column=0) 

你的最后两行代码的最后2张牌:

self._dealerCardImage1 = PhotoImage(file=str(blackjack._dealer._cards[1].fileName)) 
self._dealerCardImage1 = Label(self, image = self._dealerCardImage1) 
self._dealerCardImage1.grid(row=0, column=3) 

你重新初始化_dealerCardImage1作为标签。
您需要将ALST 2行更改为类似:

self._dealerCardImage1 = PhotoImage(file=str(blackjack._dealer._cards[1].fileName)) 
self._dealerCardLabel1 = Label(self, image = self._dealerCardImage1) 
self._dealerCardLabel1.grid(row=0, column=3) 
+0

哦,天哪..我的坏。粗心的错误!谢谢! – user1047092 2011-12-28 05:38:32

+2

@ user1047092没问题:),还记得标记答案,它会让人想要更多的帮助你。 – Serdalis 2011-12-28 05:39:52

+0

我只是想了另一个问题。现在我正在尝试显示4张图片。有没有办法显示图像,而不必像上面写的重复代码? – user1047092 2011-12-28 05:55:50

1

在另一个答案你问,如果你能创造一个循环的图像的问题。没有什么可以阻止你这样做。

例如,如果你想创建4张球员卡,你可以这样做:

def __init__(self): 
    Frame.__init__(self) 
    self.master.title("Black Jack") 
    blackjack = Blackjack() 
    self.grid() 

    self._images = [] 
    self._labels = [] 
    for column in range(4): 
     image = PhotoImage(file=str(blackjack._player._cards[column].fileName)) 
     label = Label(self, image = image) 
     label.grid(row=0, column=column) 

     self._images.append(image) 
     self._labels.append(label)