Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 加载表单后如何运行函数_Python_Kivy - Fatal编程技术网

Python 加载表单后如何运行函数

Python 加载表单后如何运行函数,python,kivy,Python,Kivy,我有一个用python编写的kivy程序,它有一个文本框和几个按钮。我已经用kivy语言编写了ui,我需要运行一个更新文本框并等待用户按下按钮的函数。当所有的小部件都被加载后,我是否可以使用on_load属性或某种东西来运行这个函数。 .kv文件: <MainGui>: id: layout1 orientation: 'horizontal' #I would like for some sort of event like below to run my fun

我有一个用python编写的kivy程序,它有一个文本框和几个按钮。我已经用kivy语言编写了ui,我需要运行一个更新文本框并等待用户按下按钮的函数。当所有的小部件都被加载后,我是否可以使用on_load属性或某种东西来运行这个函数。 .kv文件:

<MainGui>:
   id: layout1
   orientation: 'horizontal'
   #I would like for some sort of event like below to run my function:
   on_load: root.myfunction()
:
id:布局1
方向:“水平”
#我想让下面这样的事件运行我的函数:
加载时:root.myfunction()

我不确定“加载”的确切含义(即,小部件创建的哪个方面对您的功能很重要),但也许您可以在父部件上使用
,当小部件添加到另一个小部件时会出现这种情况

from kivy.app           import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label     import Label

class DemoApp(App):

    def build(self):
        self.layout = layout = BoxLayout()
        layout.label = Label(text="INITIAL TEXT")
        layout.add_widget(layout.label)
        return(self.layout)

    def on_start(self, **kwargs):
        self.layout.label.text = "APP LOADED"

DemoApp().run()
更新应用程序开始时加载的时间类中的函数
您可以定义任何函数或类并替换它,您也可以添加更多的类和函数,但请记住,构建将返回一个对象,因此最终在一个对象中管理您的程序

您可以发布代码吗,您想要什么还不清楚。您找到解决方案了吗?如果是这样的话,你能发布它吗?@user1816847:刚刚发布了一个答案,请查看:)我所说的加载是指屏幕上显示的窗口包含所有小部件,然后我希望它运行一些代码。“on_parent”似乎是布尔型的,所以我不能用它来运行函数,谢谢你的建议为什么不能在布尔型改变时运行函数?因为我必须使用while循环来检查它是否为真,这将阻止程序运行,直到它为真。不,当布尔值发生变化时,你应该使用kivy的事件系统来做一些事情,而不是用你自己的循环来重新设计轮子。正如我所说,您可以绑定到
on\u parent
事件,或者将内容放入
on\u parent
方法中。对于
.kv
文件中的小部件,
on\u parent
事件似乎会触发两次。我和@chromebookbob一样,希望从一个
.kv
文件中的空白标签和按钮开始,我从一开始就以编程方式填充这些标签和按钮。这不是特别明显。只要不希望正确设置宽度和高度,这个例子就很好。on_start确实是一个很好的解决方案!谢谢
from kivy.app import App
from kivy.uix.label import Label
from kivy.clock import Clock
import time


class Time (Label):
    def update (self, *args):
       self.text = time.strftime('%H:%M:%S')


class TimeApp (App):
    def build(self):
        time = Time()
        Clock.schedule_interval(time.update, 1) #replace here
        return time
if __name__ == '__main__':
    app = TimeApp()
    app.run()