2016-04-11 15 views
0

Hey Ich habe diesen Code in Python-Skript und es funktioniert gut. Ich habe versucht, in KV zu konvertieren, damit ich es in meine Anwendung einbeziehen kann, aber meine Versuche waren Misserfolge. Bitte helfen :(den Code benötigt für die Umwandlung ist wie folgt und es wurde in Python 3.4.4 codiert worden an seinem dem Moment als App programmiert, aber ich brauche es als Bildschirm.Python-Skript in KV-Sprache als Bildschirm konvertieren (Kivy)

if __name__ == '__main__': 
    from kivy.app import App 
    from kivy.uix.scrollview import ScrollView 
    from kivy.uix.gridlayout import GridLayout 
    from kivy.uix.button import Button 

    class ScrollViewApp(App): 

     def build(self): 
      layout1 = GridLayout(cols=6, spacing=10, size_hint=(None, None)) 
      layout1.bind(minimum_height=layout1.setter('height'), 
         minimum_width=layout1.setter('width')) 
      for i in range(200): 
       btn = Button(text='student'+str(i), size_hint=(None, None), 
          size=(200, 100)) 
       layout1.add_widget(btn) 
      scrollview1 = ScrollView(bar_width='10dp') 
      scrollview1.add_widget(layout1) 
      root = GridLayout(cols=1) 
      root.add_widget(scrollview1) 
      return root 

    ScrollViewApp().run() 

, wenn jemand helfen könnte Ich bin sehr dankbar, da ich schon eine ganze Weile daran festgebissen bin. Vielen Dank!

Antwort

1

Ich habe noch ein paar Dinge hinzugefügt, damit Sie etwas Neues lernen können.Sie können mir Fragen in Kommentaren stellen, wenn es dort ist Sie sind hier ...

main.py:

#!/usr/bin/env python2 
# -*- coding: utf-8 -*- 
from kivy.app import App 
from kivy.uix.screenmanager import Screen 
from kivy.uix.button import Button 
from kivy.properties import ObjectProperty 
from kivy.clock import mainthread 


class StudentsScreen(Screen): 

    grid = ObjectProperty() 

    def __init__(self, **kwargs): 
     super(StudentsScreen, self).__init__(**kwargs) 
     self.create_buttons() 

    @mainthread # slight delay 
    def create_buttons(self): 
     for i in xrange(200): 
      button = StudentButton(text='student %s' % i) 
      self.grid.add_widget(button) 


class StudentButton(Button): 
    pass 


class Test(App): 
    pass 

if __name__ == "__main__": 
    Test().run() 

test.kv:

ScreenManager: 

    StudentsScreen: 
     grid: grid 

     ScrollView: 
      bar_width: '10dp' 

      GridLayout: 
       id: grid 
       size_hint: None, None 
       size: self.minimum_width, self.minimum_height 
       cols: 6 
       spacing: dp(10) 


<StudentButton>: 
    size_hint: None, None 
    size: '200dp', '100dp' 
+0

hey, danke für mich aushelfen, änderte ich die Größe des abit Scroll-Bildschirm, so habe ich ein wenig Platz am oberen Rand des Bildschirms, die ich beabsichtigen, als eine Menüleiste irgendwelche Ideen zu verwenden, wie ich das tun kann? @ Jilgeza – Abul

+0

@Abul Sie können ActionBar Widget verwenden. Ich sehe, dass die Dokumentseite nicht verfügbar ist, aber wenn Sie zum Katalog 'kivy/uix' gehen und' actionbar.py' ausführen, sehen Sie eine Demonstration. – jligeza

+0

Vielen Dank, aber ich habe ein anderes Problem, jedes Mal, wenn ich vom Bildschirm zurück gehe und wieder eintrete (in der gleichen Hauptschleife), wird es einen weiteren Satz dieser Tasten machen. Wie kann ich das nicht machen? – Abul