Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Avogadrus 10 Května 2013, 10:58:37

Název: Kivy/python
Přispěvatel: Avogadrus 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?
Název: Re:Kivy/python
Přispěvatel: starenka 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)