Способ избежать повторяющихся кодов ткинтеров - PullRequest
0 голосов
/ 28 декабря 2011

Я пытаюсь отобразить изображения с помощью 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 Ответ

1 голос
/ 28 декабря 2011

Непонятно, каков ваш паттерн, но если это то, что я подозреваю, то должно работать следующее:

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 над переменной index. Если имеется только четыре ветви (как в вашем примере выше), в вашем операторе if будет четыре ветви.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...