Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Kivy/python  (Přečteno 2140 krát)

Avogadrus

  • Návštěvník
  • Příspěvků: 77
Kivy/python
« kdy: 10 Května 2013, 10:58:37 »
Mějme

Kód: [Vybrat]
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout


definice par funkci..

class MainWindow(GridLayout):
    def __init__(self, **kwargs):
        super(MainWindow, self).__init__(**kwargs)
        layout_sub = BoxLayout(orientation='vertical')
        layout = GridLayout(cols=2)
        x = 0
        for i in a:
            button = Button(text=str(i) +"\n" + str(a[i]))
            button.bind(on_press=vyber)
            button.myname = "button"+str(x)
            layout.add_widget(button)
            x+=1
        layout_sub.add_widget(layout)
        layout = GridLayout(cols=2)
        global entry_1
        entry_1 = TextInput()
        layout.add_widget(entry_1)
        button = Button(text="<-")
        button.bind(on_press=erase)
        layout.add_widget(button)
        layout_sub.add_widget(layout)
        layout = GridLayout(cols=3)
        for i in c:
            button = Button(text=str(i))
            button.bind(on_press=press)
            layout.add_widget(button)
        layout_sub.add_widget(layout)
        self.add_widget(layout_sub)



class MyApp(App):
    def build(self):
        return MainWindow()


if __name__ == '__main__':
    MyApp().run()

Myslel jsem, že když půjdu sestupně "MainWindow.BoxLayout.GridLayout.button1" budu schopen přistupovat na konkrétní tlačítko, ale dostávám
Kód: [Vybrat]
AttributeError: type object 'MainWindow' has no attribute 'BoxLayout'
 
Zkoušel jsem přistupovat přímo na název tlačítka "button1", ale to není globální, čili jsem to zkusil přepsat po vzoru TextInputu
Kód: [Vybrat]
        for i in a:
            name = "button"+str(x)
            global name
            name = Button(text=str(i) +"\n" + str(a[i]))
            name.bind(on_press=vyber)
            layout.add_widget(name)
            x+=1
kde, ale pořád dostávám error o neexistenci globálního tlačítka.

Otázka tedy zní jak přistupovat na konkrétní tlačítka?
U12.04; jádro neznámé; XFCE 4.10

starenka

  • Stálý člen
  • **
  • Příspěvků: 1276
  • Karma: plynová [zapalovač] [hasičák]
    • /home/starenka
Re:Kivy/python
« Odpověď #1 kdy: 25 Května 2013, 13:46:22 »
no a kde by se to tam jako melo vzit? si to tam sice instancijujes, ale neni to tam jako zadnej atribut...  co treba...

Kód: [Vybrat]
...
def __init__(.....
    self.layout = BoxLayout(orientation='vertical')
....

print type(MainWindow.layout)
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

 

Provoz zaštiťuje spolek OpenAlt.