2016-04-11 2 views
0

Эй У меня этот код в скрипте python, и он работает отлично. Я пытался конвертировать в KV, поэтому я могу использовать его в своем приложении, но мои попытки были неудачными. Пожалуйста, помогите :(код, необходимый для преобразования заключается в следующем, и он был закодирован в питона 3.4.4 на данный момент его запрограммирован как приложение, но мне нужно это в качестве экрана:.Преобразование скрипта Python в KV langauge как экран (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() 

если кто-то может помочь Мне очень нравится, поскольку я долгое время застрял на нем. Спасибо большое!

ответ

1

Я добавил еще кое-что, чтобы вы могли узнать что-то новое. Вы можете задать мне вопросы в комментариях, если там являются ли они ...

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

Эй, спасибо за помощь мне, я изменил размер экрана прокрутки Abit так что я немного места в верхней части экрана, который я намерены использовать в качестве строки меню любые идеи о том, как я могу это сделать? @jilgeza – Abul

+0

@Abul Вы можете использовать виджет ActionBar. Я вижу, что страница документов закрыта, но если вы перейдете в каталог 'kivy/uix' и запустите' actionbar.py', вы увидите демонстрацию. – jligeza

+0

Большое вам спасибо, что у меня есть еще одна проблема, но каждый раз, когда я возвращаюсь с экрана и снова включаюсь (в том же основном цикле), он будет создавать другой набор этих кнопок. Как я могу сделать это не так? – Abul

Смежные вопросы