如何在kivy python

时间:2017-07-14 11:38:26

标签: python user-interface kivy textinput

我是python的初学者,特别是在kivy。我在设计GUI时面临一些小问题。根据页面中的图表(我已经附上),我无法以正确的格式放置标签,TextInput。你能帮助我吗?提前致谢。

from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel, TabbedPanelItem
from kivy.lang import Builder
from kivy.uix.checkbox import CheckBox
from kivy.uix.accordion import Accordion, AccordionItem
from kivy.uix.button import Button
from kivy.app import App
from kivy.uix.textinput import TextInput

Builder.load_string("""

<Test>:
    do_default_tab: False

    TabbedPanelItem:
        text: 'page1'
        BoxLayout:
            Label:
                text: 'label'
            Label:
                text: 'entry'       
            TextInput:
                text: 'Entry'
            TextInput:
                text: 'Entry'
            CheckBox: 
                text: 'CheckBox'
            Button:
                text: 'button'


    TabbedPanelItem:
        text: 'page2'
        BoxLayout:
            Label:
                text: 'label'
            TextInput:
                text: 'entry'
            Label:
                text: 'label'
            TextInput:
                text: 'entry'
            Button:
                text: 'button'

""")

class Test(TabbedPanel):
    pass

class MyApp(App):

    def build(self):
        test = Test()
        panel = TabbedPanelItem()
        test.add_widget(panel)
        return test

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

1 个答案:

答案 0 :(得分:2)

您将小部件(Label,TextInput,CheckBox,Button ...)放在BoxLayout中,BoxLayout的行为是将小部件分组为(仅一个)列或行,您可以更改BoxLayout的方向默认设置attr&#39; orientation&#39; horizo​​ntal&#39;水平&#39; (read this

您可以将一个BoxLayout放入其他BoxLayout,并设置方向,您可以创建不同的东西,对于page1,您可以执行以下操作:

BoxLayout:
    orientation: 'vertical'
    BoxLayout:
        orientation: 'horizontal'
        Label:
            text: 'label'
        TextInput:
            text: 'Entry'
        CheckBox: 
            text: 'CheckBox'
        Button:
            text: 'button'
    BoxLayout:
        orientation: 'horizontal'
        Label:
            text: 'label'
        TextInput:
            text: 'Entry'
        CheckBox: 
            text: 'CheckBox'
        Button:
            text: 'button'

Mox 在评论中说的那样,GridLayout可能适用于您的应用。

如果您是kivy的初学者,我建议您观看来自Kivy的核心开发人员之一Alexander Taylor的this videos