Kivy Refractoring

时间:2014-08-21 15:57:07

标签: python kivy

我有一个非常简单的应用程序,我一直致力于使用Tkinter在GUI中使用python编写的工作。我已经开始为Kivy重写它,以便更容易编译不同的平台。下面的代码是我到目前为止的代码。它是一个简单的文本输入和搜索按钮。但我正在我的基类中构建它。我想在另一个类中构建这些查询控件,然后通过基类返回它们,这样我就可以从一开始就在正确的路径上开始。

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.textinput import TextInput 
from kivy.uix.button import Button 
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout



class MyApp(App):

    def build(self):
        controls = AnchorLayout(anchor_x='left', anchor_y='top')
        box = BoxLayout()


        upc_l = Label(text='UPC:', font_size=40, size_hint_y=None, 
                      size_hint_x=None, height=50, width=100,)
        entry = TextInput(font_size=40, size_hint_y=None, size_hint_x=None, 
                          height=50, width=350)
        search_b = Button(text='Search', font_size=40, size_hint_y=None,       
                          size_hint_x=None, height=50, width=200)


        controls.add_widget(box)
        box.add_widget(upc_l)
        box.add_widget(entry)
        box.add_widget(search_b)


        return controls




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

我想像这样折射它:

from kivy.app import App 
from kivy.uix.label import Label 
from kivy.uix.textinput import TextInput 
from kivy.uix.button import Button 
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout


class Query():

    <whatever needs to go here...>


class MyApp(App):

    def build(self):
        return Query()




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

3 个答案:

答案 0 :(得分:2)

这不是问题。

即使您需要某些方面的帮助,也应该解释您的问题是什么,您尝试了什么以及出了什么问题。

对于一些一般性的建议,你应该使用kv语言来定义你的小部件树,它会使事情变得更简单和容易。

答案 1 :(得分:1)

我强烈建议您观看“速成课程”视频系列。它非常有用,可以帮助您快速使用kv语言和python以及两者之间的交互。检查出here

答案 2 :(得分:1)

在Python中:

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout


class Query(AnchorLayout):
    def __init__(self, **kwargs):
        super(Query, self).__init__(**kwargs)
        self.anchor_x = 'left'
        self.anchor_y='top'

        box = BoxLayout()

        upc_l = Label(text='UPC:', font_size=40, size_hint_y=None,
                      size_hint_x=None, height=50, width=100,)
        entry = TextInput(font_size=40, size_hint_y=None, size_hint_x=None,
                          height=50, width=350)
        search_b = Button(text='Search', font_size=40, size_hint_y=None,
                          size_hint_x=None, height=50, width=200)

        box.add_widget(upc_l)
        box.add_widget(entry)
        box.add_widget(search_b)
        self.add_widget(box)


class MyApp(App):

    def build(self):
        return Query()


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