Kivy-Python 正在多处理中打开一个白屏
Kivy-Python working in multi processing opening one more white screen
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
当我运行此代码时,再打开一个 window 是白色的。我不知道为什么会打开,我该如何解决?
我认为这是关于屏幕管理器和 2.process。我尝试了所有组合来修复它,但我不能
在 Ubuntu
和 Windows 10
上尝试类似您的代码后,我发现了一些奇怪的行为。首先,额外的 Window
似乎只出现在 Windows
上,并且只有当您导入 MDApp
时才会出现。即使您只是导入 MDApp
,而不实际使用它,额外的 Window
行为也会发生。
我认为您发现了一个错误,您应该向 kivyMD
开发人员报告。
我能找到停止额外 Window
行为的唯一方法是不使用(甚至不导入)MDApp
。
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")
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 当我运行此代码时,再打开一个 window 是白色的。我不知道为什么会打开,我该如何解决? 我认为这是关于屏幕管理器和 2.process。我尝试了所有组合来修复它,但我不能
在 Ubuntu
和 Windows 10
上尝试类似您的代码后,我发现了一些奇怪的行为。首先,额外的 Window
似乎只出现在 Windows
上,并且只有当您导入 MDApp
时才会出现。即使您只是导入 MDApp
,而不实际使用它,额外的 Window
行为也会发生。
我认为您发现了一个错误,您应该向 kivyMD
开发人员报告。
我能找到停止额外 Window
行为的唯一方法是不使用(甚至不导入)MDApp
。
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")