如何将另一个python文件导入Kivy?

如何将另一个python文件导入Kivy?,python,kivy,Python,Kivy,我从互联网上复制了这段代码,试图了解Kivy是如何工作的(顺便说一句,它确实工作)。我正在尝试导入我创建的另一个python文件,名为“Mifflin”(热量方程程序),方法是使用以下命令: import Mifflin 与其他进口商品一起。它正确地导入了它,但每当我运行程序时,它都会运行Mifflin,执行完文件后,它就会运行其余的代码 from kivy.app import App from kivy.uix.button import Button from kivy.uix.labe

我从互联网上复制了这段代码,试图了解Kivy是如何工作的(顺便说一句,它确实工作)。我正在尝试导入我创建的另一个python文件,名为“Mifflin”(热量方程程序),方法是使用以下命令:

import Mifflin
与其他进口商品一起。它正确地导入了它,但每当我运行程序时,它都会运行Mifflin,执行完文件后,它就会运行其余的代码

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
class TestApp(App):
    def build(self):
        layout = BoxLayout(orientation='vertical')
        # use a (r, g, b, a) tuple
        blue = (0, 0, 1.5, 2.5)
        red = (2.5, 0, 0, 1.5)
        btn =  Button(text='Touch me!', background_color=blue, font_size=120)        
        btn.bind(on_press=self.callback)
        self.label = Label(text="------------", font_size='50sp')
        layout.add_widget(btn)
        layout.add_widget(self.label)
        return layout
    def callback(self, event):
        print("button touched")  # test
        self.label.text = "button touched"
TestApp().run()

我的主要目标是按下一个按钮,然后运行程序“Mifflin”,我不知道怎么做。提前感谢您的帮助。

我相信您的代码与此类似:

import <that file>
print('hi')
因为导入文件的末尾有
TestApp().run()
。请执行以下操作以防止它:

if __name__ == '__main__':
    TestApp().run()
当调用
App.run()
方法时,Kivy启动其事件循环,其方式非常简单,如下所示:

while True:
    pass

在这样一个循环被打破之前,它之后的代码(因此即使在导入之后)也不会被执行。

可能的重复我可以看到您如何认为它是重复的,但不同的是,我在导入外部python文件并将其绑定到按钮时遇到了问题。感谢您的响应。那么你知道有没有办法将导入的文件包含到while循环中吗?@CodyOncken是的。从while循环调用它。或者在循环中使用某种监听器来检查外部发生了什么,例如使用OSC(请参阅kivy文档)。但是,我如何从While循环中准确调用它?@CodyOncken您可以使用
App.run()
方法直接在文件中执行代码。按你的方式做并没有多大用处,相反,你可以用另一种方式来做——file where is
App.run()
是基础,你可以将东西导入其中。或者在最后放一些,如果我提到的,从文件中导入一些东西,编写一些代码,然后调用
App.run()
…(显然,所有这些都是应用实例)。
while True:
    pass