我正在使用 python、kivymd 和 kivy 的螢屏管理器切換登錄系統,但是,當我嘗試將螢屏從登錄螢屏切換到另一個螢屏時,沒有任何反應,沒有錯誤,也沒有視覺變化。這是一個可重現的例子:
.py 檔案
import kivy
from kivy.uix.image import Image
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivymd.app import MDApp
class Screen1(Screen):
def SwitchScreen(self):
scrMng.current = "screen2"
class Screen2(Screen):
def SwitchScreen(self):
scrMng.current = "screen1"
scrMng = ScreenManager()
scrMng.add_widget(Screen1(name = "screen1"))
scrMng.add_widget(Screen2(name = "screen2"))
class TestApp(MDApp):
def build(self):
return Builder.load_file("main.kv")
TestApp().run()
.kv 檔案
ScreenManager:
Screen1:
Screen2:
<Screen1>
name: "screen1"
MDCard:
size_hint: None, None
size: 300, 350
pos_hint: {"center_x": 0.5, "center_y": 0.5}
elevation: 10
padding: 25
spacing: 25
orientation: 'vertical'
MDLabel:
text: "Screen2"
font_size: 40
halign: "center"
font_bold: True
theme_text_color: "Custom"
text_color: (0.20, 0.33, 1.00, 1)
MDRoundFlatButton:
text: "SWITCH"
font_size: 12
pos_hint: {"center_x": 0.5}
on_press: self.parent.parent.SwitchScreen()
<Screen2>
name: "screen2"
MDCard:
size_hint: None, None
size: 300, 350
pos_hint: {"center_x": 0.5, "center_y": 0.5}
elevation: 10
padding: 25
spacing: 25
orientation: 'vertical'
MDLabel:
text: "Screen1"
font_size: 40
halign: "center"
font_bold: True
theme_text_color: "Custom"
text_color: (0.20, 0.33, 1.00, 1)
MDRoundFlatButton:
text: "SWITCH"
font_size: 12
pos_hint: {"center_x": 0.5}
on_press: self.parent.parent.SwitchScreen()
Python 版本:3.9.9 Kivy 版本:2.0.0
任何幫助都值得贊賞!
uj5u.com熱心網友回復:
您正在使用以下行創建 GUI:
scrMng = ScreenManager()
scrMng.add_widget(Screen1(name = "screen1"))
scrMng.add_widget(Screen2(name = "screen2"))
但是scrMng上面創建的從未使用過,因此可以消除這些行。并且scrMng在 python 代碼中的參考不會做任何事情,因為scrMng它實際上并不是你的應用程式的一部分。
您的 GUI 實際上是由以下行創建的:
return Builder.load_file("main.kv")
那么Screen類可以變成:
class Screen1(Screen):
def SwitchScreen(self):
self.manager.current = "screen2"
class Screen2(Screen):
def SwitchScreen(self):
self.manager.current = "screen1"
請注意,self.manager在一個Screen類中始終是對其的參考ScreenManager。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/409884.html
標籤:
上一篇:使用批處理重命名檔案夾
下一篇:errorNoSuchMethodError:java.util.stream.Stream.toList()Ljava/util/List僅來自CLI,來自Eclipse
