Kivy,功能,分支和方法

时间:2017-09-24 17:06:28

标签: android python kivy

我是kivy的新人,我有一些问题,希望你能帮助我。

第一 我想知道如果从kivy lang我可以调用外部函数,例如:

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.config import Config

Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', False)

def testButton():
    print("Woking...")

kw = '''


<Setup>:
    Button:
        on_touch_down: testButton()


    '''

class Setup(RelativeLayout):
    def __init__(self, **kwargs):
        super(Setup, self).__init__(**kwargs)

Builder.load_string(kw)
runTouchApp(Setup())

我希望在按下按钮时,调用函数&#34; TestButton()&#34;。可能吗?

另一个问题: 我想知道我是否可以创建一个空类并以dinamically方式添加小部件,例如:

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.config import Config

Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', False)

def testButton():
    print("Woking...")

kw = '''


<Setup>:
    RelativeLayout:
        Button:

    '''

class Setup():
    def __init__(self):
        # super(Setup, self).__init__(**kwargs)

Builder.load_string(kw)
runTouchApp(Setup())

在前面的第一个代码中,我继承了#34; RelativeLayout&#34;在安装程序类中,但在这一个我想创建&#34; RelativeLayout&#34;没有继承它,它可能??

最后一个问题是,为什么我无法编辑小部件的大小,我把大小,但看起来像没有代码:

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.config import Config

Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', False)


kw = '''


<Setup>:
    size: 10, 10
    TextInput:
        size: .1, .1


    '''

class Setup(RelativeLayout):
    def __init__(self, **kwargs):
        super(Setup, self).__init__(**kwargs)
        # super(Setup, self).__init__(**kwargs)

Builder.load_string(kw)
runTouchApp(Setup())

我试图设置Setup和TextInput的大小,但在孔窗口中显得非常大。

我希望你能帮助我。谢谢!

1 个答案:

答案 0 :(得分:0)

答案1

是的,可以在另一个Python脚本中调用内联外部函数/方法或函数/方法。有关详细信息,请参阅以下示例。

示例 - 回答1

main.py

from kivy.app import App
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.button import Button
from kivy.config import Config

Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', False)


def testButton():
    print("Woking...")


class Setup(RelativeLayout):

    def __init__(self, **kwargs):
        super(Setup, self).__init__(**kwargs)
        button = Button(text="Run external method, testButton")
        button.bind(on_press=lambda x: testButton())
        self.add_widget(button)


class TestExtFuncApp(App):
    def build(self):
        return Setup()


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

testextfunc.kv

#:kivy 1.10.0

<Setup>:

输出 - 答案1

Inline External Function/Method Invoked

答案3

替换&#34;尺寸:0.1,0.1&#34;使用&#34; size_hint:0.1,0.1&#34;。有关详细信息,请参阅以下示例。

示例 - 回答3

main.py

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.config import Config

Config.set('graphics', 'width', '600')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', False)


kw = '''
<Setup>:
    size: 10, 10
    TextInput:
        size_hint: .1, .1
'''


class Setup(RelativeLayout):
    pass


Builder.load_string(kw)
runTouchApp(Setup())

输出 - 答案3

enter image description here