2011-12-28 7 views
0

tkinter를 사용하여 이미지를 표시하려고합니다. 나는 여기에 반복적 인 코드가 있다는 것을 알아 차렸다. 이미지를 표시하기 위해이 코드를 제거하려고합니다. 제 목표는 여러 가지 이미지를 개별적인 방식으로 표시하는 것이 아니라 동적으로 대량으로 표시하는 것입니다.반복적 인 코드를 피하는 방법 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._dealerCardLabel = Label(self, image = self._dealerCardImage) 
    self._dealerCardLabel.grid(row=0, column=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) 

답변

1

그것은 당신의 패턴이 정확히 무엇인지 분명하지 않다,하지만 난 의심 무슨 경우, 아래의 작업을해야합니다 :

for index in range(<your range>): 
    if index % 4 == 0: 
     self._playerCardImage = PhotoImage(file=str(blackjack._player._cards[index].fileName)) 
     self._playerCardLabel = Label(self, image = self._playerCardImage) 
     self._playerCardLabel.grid(row=0, column=index) 

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

당신은 사용하여 행/열/파일 인덱스를 산출 할 수 있어야한다 mod 변수에 대한 조작. 위 예제 에서처럼 4 개의 분기 만있는 경우 if 문에 4 개의 분기가 있습니다.

+0

의견을 보내 주셔서 감사합니다. 그런 식으로 시도했지만 Label이 새로 고침되어 마지막 이미지 만 표시합니다. : – user1047092

+0

아, 알겠습니다. 문제는 'playerCardImage/Label' 변수를 사용하는 것입니다. 다음과 같이 변수 이름에 색인을 추가해야합니다 :'val = getattr (self,'playerCardImage '+ str (index) '속성을 지정할 수 있습니다. – jknupp

관련 문제