[英]Kivy Screenmanager Issue
我正在嘗試使用 kivy 創建一個具有多個屏幕的移動應用程序(其中一個嵌入了 camara object),但下面的代碼只產生黑色 window,沒有顯示任何內容你能幫我弄清楚為什么這不起作用嗎?
import kivy, ctypes
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.camera import Camera
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class camera(Screen):
def build(self):
#camera obj
self.camera_obj = Camera()
self.camera_obj.resolution = (800,800)
#button obj
button_go_back = Button(text = "go back")
button_go_back.size_hint = (.5,.2)
button_go_back.pos_hint = {"x": .25, "y": .25}
#layout
layout = BoxLayout()
layout.add_widget(self.camera_obj)
layout.add_widget(button_go_back)
return layout
class MainWindow(Screen):
def build(self):
button_take_picture = Button(text = "take a picture")
button_take_picture.size_hint = (.5,.2)
button_take_picture.pos_hint = {"x": .25, "y": .25}
layout = BoxLayout()
lab = Label(text="some text")
layout.add_widget(button_take_picture)
layout.add_widget(lab)
return layout
screen_manager=ScreenManager()
screen_manager.add_widget(MainWindow(name='main'))
screen_manager.add_widget(camera(name='camera'))
class NMS(App):
def build(self):
return screen_manager
if __name__ == "__main__":
ctypes.windll.shcore.SetProcessDpiAwareness(1)
NMS().run()
由於您在 python 中初始化Screen
s,因此您可能需要不構建__init__
構造函數(據我所知,沒有名為build
的默認方法用於Screen
小部件)。
因此,您可以將MainWindow
更改為這樣的東西,
class MainWindow(Screen):
def __init__(self,**kwargs):
super().__init__(**kwargs)
button_take_picture = Button(text = "take a picture")
button_take_picture.size_hint = (.5,.2)
button_take_picture.pos_hint = {"x": .25, "y": .25}
layout = BoxLayout()
lab = Label(text="some text")
layout.add_widget(button_take_picture)
layout.add_widget(lab)
self.add_widget(layout) # Add all those in this screen.
類似的規則適用於其他屏幕。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.