如何在kivy程序中单独运行其他python



从Arduino到python,我已经习惯了在循环中运行的所有东西。

我正在尝试理解python是如何与kivy交互的。

我明白,为了使一段代码一遍又一遍地运行,我需要一个while语句。然而,如果我使用的代码在它到达kivy代码之前循环,它将永远不会到达kivy代码。但是,如果我在kivy代码之后创建一个循环,它将不会运行,直到我关闭程序。

我有谷歌,我看到python/kivy项目的简单项目的例子,所有的代码都属于UI粘合逻辑,使它实际做一些事情。但是我没有看到任何显示python代码独立于kivy项目运行。

换句话说,如果我在Arduino中做了一个项目,我会有一个主循环,我可以调用函数,然后从它们返回。然而,我不明白用kivy/python做这件事的最好方法是什么。

我在下面发布的示例代码不是一个循环,但我希望它能一次运行所有内容。但是它将运行第一个打印语句,然后当我关闭应用程序时,最后一个打印语句将运行。

我知道循环不推荐使用面向对象编程,这只是一个简单的例子,作为我习惯的参考。

对于那些会说我不明白你在问什么,你想做什么或问什么?

我想问我在哪里放python代码不属于kivy代码,但需要在kivy运行时在循环或任何东西中运行。这样我就可以在python端进行操作而不会阻塞kivy。

这需要多个python程序吗?让kivy程序本身就像。kv文件一样。

还是要求所有的东西都放到类中?

感谢任何澄清,最佳实践或例子。

from kivy.app import App
from kivy.uix.button import Button
print("test")
class FirstKivy(App):
def build(self):
return Button(text="Test text")
print("test2")
FirstKivy().run()
print("test3")

您需要在代码中添加Threading


from kivy.app import App
from kivy.uix.button import Button
import threading
print("test")
class FirstKivy(App):
def build(self):
return Button(text="Test text")
print("test2")
def run():
FirstKivy().run()
def print_stuff(): 
print("test3")
kivy_thread = threading.Thread(target=run)
print_thread = threading.Thread(target=print_stuff)
kivy_thread.start()
print_thread.start()

相关内容

最新更新