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

时间:2017-03-04 21:57:48

标签: python kivy

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

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”,我不知道该怎么做。在此先感谢帮助我。

1 个答案:

答案 0 :(得分:1)

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

import <that file>
print('hi')

,你的控制台输出将是:

[INFO   ] [GL          ] NPOT texture support is available
button touched
[INFO   ] [Base        ] Leaving application in progress... # Kivy app exits here
hi

因为导入文件末尾有TestApp().run()。这样做是为了防止它:

if __name__ == '__main__':
    TestApp().run()

当调用App.run()方法时,Kivy会以一种非常简单的方式启动它的事件循环:

while True:
    pass

并且直到这样的循环被破坏,之后才会执行代码(因此即使在导入之后)也将执行。