我的档案:
login.kv
如何用main.py和main.kv制作的按钮打开main.py?
我不想把所有的接口代码放在一个main.kv文件中。
main.py
from login import Login
from welcome import Welcome
class Screen_manager(ScreenManager):
def __init__(self,**kwargs):
super(ScreenManager,self).__init__(**kwargs)
self.current='login-page'# not screen by name 'login-page' error
self.addWidget(Login(name='login-page') #'nonetype' object has no attribute 'stop'
class MainApp(App):
Build(self):
return ScreenManager()
if __name__=="__main__":
MainApp.run()login.py
from kivy.uix.screenmanger import Screen
class Login(Screen):
def openwelcome(self):
?????login.kv:
<Login>:
name:login-page
Button:
text:"press me"
on_press:root.openwelcome()发布于 2022-07-01 18:17:22
我不确定,你是在找这个答案还是别的什么。为了处理多个.kv和.py文件,让我们假设我们拥有libs/baseclass中的所有.py文件&以及libs/kvs中的所有.kv文件。为了集成所有文件,我们可以创建一个main.kv文件,其内容如下所示:
# import the python files defining the Screens
#: import Screen1 libs.baseclass.screen1.Screen1
#: import Screen2 libs.baseclass.screen2.Screen2
# include the kv files for the other Screens
#: include libs/kvs/screen1.kv
#: include libs/kvs/screen2.kv
ScreenManager:
Screen1:
Screen2:最后,通过应用程序中的Builder加载此文件。要链接不同的屏幕,让我们假设您当前在Screen1上,并希望转到Screen2,请创建屏幕1.kv和屏幕2.kv,如下所示:
<Screen1>:
name: 'Screen1'
# And in screen2.kv file
<Screen2>:
name: 'Screen2'最后,在您的main.kv上应该如下所示
ScreenManager:
Screen:
name: "main_screen"
BoxLayout:
orientation: "vertical"
Label:
text: "main screen"
Button:
text: "to screen 1"
on_press: app.root.current = "Screen1"
Button:
text: "to screen 2"
on_press: app.root.current = "Screen2"
Screen1:
Screen2:希望这能回答你的问题。如果是的话,请接受答案。
https://stackoverflow.com/questions/59371149
复制相似问题