Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: pist 09. 03. 2011, 22:02:25

Název: Python TkInter a tvorba tlačítek
Přispěvatel: pist 09. 03. 2011, 22:02:25
Zdravím,

Potřebuji vytvořit několik stejných buttonů a příjde mi nepraktické je vypisovat všechny zvlášť viz následující kód:
Kód: [Vybrat]
self.btn1= Button(self.fr, width=4, height=1)
self.btn1.grid(row=0, column=0)
self.btn2 = Button(self.fr, width=4, height=1)
self.btn2.grid(row=0, column=1)
                .
                .
                .
self.btnX = Button(self.fr, width=4, height=1)
self.btnX.grid(row=0, column=X)

zkoušel jsem to řešit cyklem:
Kód: [Vybrat]
for i in range(13):
      self.btn+str(i) = Button(self.fr, width=4, height=1)
      self.btn+str(i).grid(row=0, column=i)

Bohužel mi to vyhodilo chybu.
Jde to řešit nějakým podobným způsobem nebo musím vypisovat každé tlačítko zvlášť?

Děkuji za odpovědi
Název: Re: Python Tkinter
Přispěvatel: jj 09. 03. 2011, 22:16:09
for i in range(13):
      vars()['btn%s % i] = Button(self.fr, width=4, height=1)
      eval('btn%s' % i).grid(row=0, column=i)


ale je to humus teda...  :D
Název: Re: Python Tkinter
Přispěvatel: Inkvizitor 09. 03. 2011, 22:56:46
Těch možností je víc. Například není nutné ty buttony ukládat do samostatných instančních proměnných, ale lze je uložit do seznamu.

Nebo něco jako

Kód: [Vybrat]
self.setattr('btn%u' % i, Button(self.fr, width=4, height=1))
self.getattr('btn%u' % i).grid(row=0, column=i)
Název: Re: Python Tkinter
Přispěvatel: Inkvizitor 09. 03. 2011, 22:58:07
Syntakticky to mám blbě, ale jako návod by to mělo stačit.