Kivy中的Apps:kvfile和主.py并交换输入文本

2024-04-19 04:07:41 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我的代码:

在主.py在

from kivy.app import App
from kivy.graphics import Color
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.listview import ListItemButton
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import StringProperty, NumericProperty, ObjectProperty
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class ShowStartScreen(Screen):
    pass

class CurrLocation(Screen):
    pass

class SearchHeight(Screen):
    pass

class SearchMountain(Screen):
    pass

class SearchLocation(Screen):
    pass

class SearchSummit(Screen):
    pass

class SearchSummary(Screen):
    pass

class SearchScreenManager(ScreenManager):
    pass

class MountainClimberApp(App):
    def build(self):
        return SearchScreenManager()

    def get_search_height(self):
        scr_manager = self.root
        hScr = scr_manager.get_screen('height')
        hInput = StringProperty(hScr.ids['searchHigherThan'])
        print "height: {}".format(hInput)

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

我的kv文件:

^{pr2}$

我知道很多,但相对容易理解。这是我和两个同事一起尝试实现的一个应用程序的代码。它显示一个开始屏幕、一个位置屏幕和四个搜索屏幕。在所有搜索屏幕中,可以输入文本或值。在summary屏幕上,用户应该看到他输入的所有参数,这些参数应该用于处理他的查询。如何从摘要小部件中访问四个搜索小部件中定义的元素?在

请帮忙!在

那是所有的人!在

菲利普


Tags: 代码fromimportselfapp屏幕passscreen
2条回答

使用kivy开发人员的screenmanager类:http://kivy.org/docs/api-kivy.uix.screenmanager.html

然后,您不仅可以访问各种屏幕上的子窗口小部件,而且还可以利用已经内置的各种复杂行为,例如屏幕之间的动画过渡。在

这里有一个很棒的教程:https://www.youtube.com/watch?v=xx-NLOg6x8o(“Kivy速成课程14:使用屏幕管理器”)

screenmanager有一个get_screen(name)方法,可用于访问屏幕,您可以使用ids来引用子窗口小部件。在

这允许访问,但通常更好的做法是使用基础小部件(在本例中是screenmanager)的自定义属性,以允许直接访问而不需要id。对于textinput,您可以创建一个ObjectProperty并将其分配给kv文件中目标textinput的id,或者创建一个StringProperty/NumericProperty并将其绑定到textinput的text属性。在

如果SearchSummary是从搜索类继承的呢。Python支持多重继承。在

例如:

Class A(object):
    size = 'big'
    colour = 'green'

Class B(object):
    weight = 'heavy'
    says = 'how do?'

Class C(object):
    mute = True
    legs = 4

class D(A, B, C): # multiple inheritance
    pass

>>> print D.weight
'heavy'
>>> print D.legs
4
>>> print D.size
'big'

与kivy:

^{pr2}$

输出:

[1, 2, 3, 3, 4]
hi there
10

更多信息: Python classes and inheritance

相关问题 更多 >