KivyPython在多个处理中打开一个白色屏幕

2024-10-06 12:57:34 发布

您现在位置:Python中文网/ 问答频道 /正文

    import file...
    from mobus import modbus
    .....

class MainWindow(Screen):
    def __init__(self, **kwargs):
        super(MainWindow, self).__init__(**kwargs)

class SecondWindow(Screen):
    pass

class ThirdWindow(Screen):
    pass

class WindowManager(ScreenManager):
    pass

class mainApp(MDApp):
    def build(self):
        iconfonts.register('default_font', 'iconfonts\gar.ttf',
                           join(dirname(__file__), 'iconfonts\gar.fontd'))

        Config.set('graphics', 'width', '1080')
        Config.set('graphics', 'height', '720')
        return Builder.load_file("my.kv")


def de():
    mainApp().run()

def modbusStart():
    modbus.connect()

if __name__ == "__main__":

    a = Process(target=de)
    b = Process(target=modbusStart)
    a.start()
    b.start()

Screen looks like 当ı运行此代码时,会打开另一个白色窗口。我不知道为什么开门,怎么能把它修好? 我认为这是关于屏幕管理器和2.0进程的。我尝试了所有的组合来修复它,但我做不到


Tags: importselfconfiginitdefpassscreenkwargs
2条回答

Main.py

import modbus
from multiprocessing import Process, Queue, freeze_support
import kvy

def kivy():
    kvy.de()

def modbusStart():
    modbus.connect()

if __name__ == "__main__":
    a = Process(target=kivy)
    b = Process(target=modbusStart)
    a.start()
    b.start()

基维

from kivy.uix.screenmanager import ScreenManager,Screen,FadeTransition
from kivy.config import Config
from kivy.lang import Builder
from kivy.core.text import LabelBase
from kivymd.app import MDApp
from kivy.uix.image import Image
from kivy.uix.button import ButtonBehavior
from iconfonts import iconfonts
from os.path import join, dirname


class ImageButton(ButtonBehavior,Image):
    pass

class MainWindow(Screen):
    pass

class SecondWindow(Screen):
    pass

class ThirdWindow(Screen):
    pass

class WindowManager(ScreenManager):
    pass

class mainApp(MDApp):
    def build(self):
        iconfonts.register('default_font', 'iconfonts\gar.ttf',
                           join(dirname(__file__), 'iconfonts\gar.fontd'))
        LabelBase.register(name="prototype", fn_regular="font/Prototype.ttf")

        Config.set('graphics', 'width', '1080')
        Config.set('graphics', 'height', '720')
        return Builder.load_file("my.kv")

def de():
    mainApp().run()

Modbus

from pymodbus.client.sync import ModbusTcpClient

def connect():
    client = ModbusTcpClient("localhost")
    client.connect()
    if client.connect():
        print("Connection Successful")
    else:
        print("Conenction Failed")

UbuntuWindows 10上尝试类似您的代码之后,我发现了一些奇怪的行为。首先,额外的Window似乎仅出现在Windows上,并且仅当您导入MDApp时才会出现。即使您只是导入MDApp,并且没有实际使用它,也会发生额外的Window行为

我认为您发现了一个bug,应该向kivyMD开发人员报告

我能找到的阻止额外Window行为的唯一方法是不使用(甚至不导入)MDApp

相关问题 更多 >