相关疑难解决方法(0)

同时运行多个相互通信的Kivy应用程序

我希望我的Kivy应用程序能够在可以相互通信的Windows机器上产生多个应用程序(即新Windows)。

ScreenManagerPopup选项将不会剪切它,因为它们位于同一窗口中。我需要能够在多个监视器之间拖动新屏幕,因此需要多个窗口。

Kivy文档明确声明“ Kivy每个应用程序仅支持一个窗口:请不要尝试创建多个窗口。”

谷歌搜索产生了一种简单的方法,可以从另一个应用程序内简单地生成一个新的应用程序,如下所示:

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label


class ChildApp(App):
    def build(self):
        return Label(text='Child')


class MainApp(App):

    def build(self):
        b = Button(text='Launch Child App')
        b.bind(on_press=self.launchChild)
        return b

    def launchChild(self, button):
        ChildApp().run()

if __name__ == '__main__':
    MainApp().run()
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,它会在同一窗口中启动该应用程序并崩溃,并且我的终端会疯狂地吐出:

Original exception was:
Error in sys.exceptionhook:
Run Code Online (Sandbox Code Playgroud)

我得到同样的结果,如果代替ChildApp().run()我做multiprocessing.Process(target=ChildApp().run()).start()

使用subprocess库使我更接近想要的东西:

# filename: test2.py

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


class ChildApp(App):
    def build(self):
        return …
Run Code Online (Sandbox Code Playgroud)

python user-interface python-2.7 kivy

5
推荐指数
2
解决办法
3357
查看次数

标签 统计

kivy ×1

python ×1

python-2.7 ×1

user-interface ×1