【发布时间】:2020-02-21 08:46:24
【问题描述】:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanger import ScreenManager, Screen
Builder.load_string("""
<MenuScreen>:
BoxLayout:
FloatLayout:
Image:
id: homebackg
pos: 0, 0
source: "dark.png"
<SettingsScreen>:
BoxLayout:
FloatLayout:
Image:
id: settingsbackg
pos: 0, 0
source: "dark.png"
Button:
text: ""
color: 1.0, 1.0, 1.0, 0.0
on_press:
root.buttonclick()
""")
class MenuScreen(Screen):
def darkmode(self):
self.ids.homebackg.source = "dark.png"
def litemode(self):
self.ids.homebackg.source = "lite.png"
class SettingsScreen(Screen):
def darkmode(self):
self.ids.settingsbackg.source = "dark.png"
def litemode(self):
self.ids.settingsbackg.source = "lite.png"
def buttonclick(self):
file = open("stat.txt", "r")
themestat = file.read()
file.close()
if themestat == "lite":
SettingsScreen.darkmode(self)
MenuScreen.darkmode(self)
file = open("stat.txt", "w")
file.write("dark")
file.close()
elif themestat == "dark":
SettingsScreen.litemode(self)
MenuScreen.litemode(self)
file = open("stat.txt", "w")
file.write("lite")
file.close()
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))
class MyApp(App):
def build(self):
return sm
if __name__ == '__main__':
MyApp().run()
假设我已经正确地完成了屏幕转换而不是添加以减少代码的体积,我在从设置屏幕更改菜单屏幕的背景时遇到了问题。这是你看到的暗模式,在此先感谢。 从 SettingsScreen 执行 MenuScreen.darkmode(self) 时未定义 Self。
【问题讨论】:
-
您的代码会生成一个左下角有一个白色矩形的空窗口。请发帖minimal reproducible example...