python - 如何从不同的 py 文件制作 kivy 应用程序
问题描述
我正在尝试用不同的 .py 文件制作应用程序。但我不知道如何将它们添加在一起,我有一个主文件和一个登录文件,计划添加更多,但我现在正在试验这些。它们现在非常基本,直到我弄清楚它们之间的这种“联系”,然后我将开始添加一些更复杂的东西。我尝试了几件事,但它们没有用,但我将它们留在代码中供您查看(我试图让应用程序从 MainWindow 启动,并在按下第一个按钮时进入登录页面*)。这是代码,请帮助我。
*现在当我按下按钮时,它给了我这个错误:OSError:异常:访问冲突写入0x0000000080006010
这是 main.py:
from kivy.lang import Builder
from kivy.app import App
import login
from kivy.uix.screenmanager import Screen
kv = Builder.load_string('''
<MainWindow>:
GridLayout:
cols:1
GridLayout:
rows:5
Button:
text:"NOVA ROBA"
on_release:
root.call_login()
Button:
text:"KUPCI"
Button:
text:"PRODATO"
Button:
text: "AGRONOMI"
Button:
text: "STANJE U MAGACINU"
''')
class MainWindow(Screen):
def call_login(self):
login.app().run()
pass
class main_app(App):
def build(self):
return MainWindow()
if __name__ == '__main__':
main_app().run()
这是登录.py:
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.app import App
class Login(Screen, App):
def build(self):
return
pass
kv = Builder.load_string('''
<Login>:
name:"login"
GridLayout:
rows:2
GridLayout:
cols:2
Label:
text:"Password: "
TextInput:
id:passwd
multiline: False
Button:
text: "Submit"
on_release:
passwd.text = ""
''')
class app(App):
def build(self):
return Login()
if __name__ == "__main__":
app().run()
解决方案
您正在创建 2 个不需要的应用程序。而不是从 Loginscreen 中的 Screen 和 App 都继承,而是仅从 Screen 继承。然后在 main.py 的 build 方法中创建一个 ScreenManager,然后将导入的登录屏幕添加为小部件,要切换到新屏幕,请在 MainWindow 的 call_login 方法中使用 self.manager.current = "login"
class app(App):
def build(self):
sm = ScreenManager()
sm.add_widget(MainWindow())
sm.add_widget(Login())
return sm
推荐阅读
- c# - 使用 C# 的自动映射器
- spring-boot - 服务中的@Transactional
- javascript - 搜索功能不适用于前端
- c++ - 如何从十进制数的二进制表示中计算所有有效数字?像 1011 到 1110 这也是一个有效的数字
- c# - 我想使用 LAG 函数在另一列中运行总计,但它在 SQL Server 2012 中不起作用
- asp.net-core - 如果不是强制性的,为什么要使用 asp-controller 和 asp-action
- c++ - 输入错误数据类型时的 C++ 初学者无限循环并帮助评估我的代码
- php - php文件无法向表中插入数据
- c++ - 没有GUI线程或命名窗口的OpenCV putText?
- python - Matplotlib 后端问题 _tkinter.TclError: no display name and no $DISPLAY environment variable