Python 避免重复编码的一种方法
我正在尝试使用tkinter显示图像。我注意到这里有重复的代码。我试图摆脱这些代码来显示图像。我的目标是不以离散的方式显示大量图像,而是以数量动态地显示它们 请帮忙,谢谢Python 避免重复编码的一种方法,python,tkinter,Python,Tkinter,我正在尝试使用tkinter显示图像。我注意到这里有重复的代码。我试图摆脱这些代码来显示图像。我的目标是不以离散的方式显示大量图像,而是以数量动态地显示它们 请帮忙,谢谢 def __init__(self): Frame.__init__(self) self.master.title("Black Jack") blackjack = Blackjack() self.grid() self._playerCardImage = PhotoImage
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)
现在还不清楚你的模式到底是什么,但如果这是我所怀疑的,那么下面的方法应该有效:
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)
...
范围()中的索引的:
如果索引%4==0:
self.\u player cardimage=PhotoImage(file=str(21点.\u player.\u cards[index].fileName))
self.\u playerCardLabel=标签(self,image=self.\u playerCardImage)
self.\u playerCardLabel.grid(行=0,列=索引)
elsif索引%4==1:
self.\u playerCardImage1=PhotoImage(file=str(21点.\u player.\u cards[index].fileName))
self.\u playerCardLabel1=标签(self,image=self.\u playerCardImage1)
self.\u playerCardLabel1.grid(行=0,列=索引)
...
您应该能够使用index变量上的mod操作计算行/列/文件索引。如果只有四个分支(如上面的示例所示),您的If语句中将有四个分支。谢谢您的评论。我尝试过这种方法,但标签会刷新并仅显示最后一个图像:(啊,我明白了。问题是变量
playerCardImage/Label
的使用。您需要将索引附加到变量名,如下所示:val=getattr(self,'playerCardImage'+str(index)
,用于您分配的每个属性。