【问题标题】:How do you import another python file into Kivy?如何将另一个 python 文件导入 Kivy?
【发布时间】:2017-03-04 21:57:48
【问题描述】:

我从互联网上复制了这段代码,试图了解 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”,我不知道该怎么做。提前感谢您帮助我。

【问题讨论】:

  • 我可以看出您认为它是重复的,但不同的是我在导入外部 python 文件然后将其绑定到按钮时遇到问题。

标签: python kivy


【解决方案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

并且在这样的循环被破坏之前,不会执行任何代码(因此即使在导入之后)。

【讨论】:

  • 感谢您的回复。那么你知道是否有办法将导入的文件包含在 while 循环中吗?
  • @CodyOncken 是的。从 while 循环中调用它。或者在循环内制作某种监听器来检查外面发生了什么,例如使用 OSC(参见 kivy 文档)。
  • 我该如何从 While 循环中调用它?
  • @CodyOncken 您可以使用App.run() 方法直接在文件中执行代码。以您的方式执行它并不是很有用,而是以相反的方式执行它-App.run() 所在的文件是基础,您将内容导入其中。或者像我提到的那样在末尾添加一些 IF,从文件中导入一些内容,执行一些代码并然后调用 App.run()...(显然,所有这些都与 App 实例一起使用)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2021-08-23
  • 2013-06-03
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多