python - 当第一个脚本运行第二个脚本方法时,第二个脚本无法识别第一个脚本的变量
问题描述
我有这个脚本MainGUI.py
,它从另一个脚本调用一个方法Main2.py
。该MainGUI.py
脚本与一个.kv
名为 的文件链接gui.kv
,其中调用了一个方法submitbutton()
。这是一个定义的函数Main2.py
,最终会遇到该行sm.current = "main"
,这是我在我的母文件MainGUI.py
中定义的,其中 sm 是一个ScreenManager
类,“main”是Screen
我在gui.kv
文件中定义的类的名称。当函数执行时,我希望 ScreenManagersm
转到“主”屏幕。但不知何故,我收到以下错误:
NameError: name 'sm' is not defined
所以我假设我在文件之间链接变量时做错了,但我找不到什么。这是(相关的)代码:
主GUI.py
# importing functionality
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.core.window import Window
from kivy.uix.screenmanager import ScreenManager, Screen
from Logini.Main.Main2 import LoginWindow
from Logini.Main.Main2 import RegisterWindow
# defining screenmanager and screens
class sm(ScreenManager):
pass
class LoginWindow(LoginWindow):
pass
class RegisterWindow(RegisterWindow):
pass
class MainWindow(Screen):
pass
class PreferencesWindow(Screen):
pass
# linking .py with .kv
kv = Builder.load_file('gui.kv')
# creating application class that returns variable kv
class MyApp(App):
def build(self):
return (kv)
if __name__ == '__main__':
MyApp().run()
Main2.py
from kivy.uix.screenmanager import Screen
from kivy.properties import ObjectProperty
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from GUI.MainGUI import sm
class LoginWindow(Screen):
username = ObjectProperty(None)
password = ObjectProperty(None)
def submitbutton(self):
username = self.username.text
password = self.password.text
with open("users.txt", 'r') as ff:
for i in ff:
usernamee, passwordd = i.split(';')
print(usernamee, passwordd)
print(username, password)
if username == usernamee and password == passwordd.strip():
sm.current = "main"
gui.kv
sm:
LoginWindow:
MainWindow:
PreferencesWindow:
RegisterWindow:
<LoginWindow>:
name: "login"
username: username
password: password
FloatLayout:
Button:
pos_hint:{"x":0.3,"y":0.375}
size_hint: 0.4, 0.1
text: "Submit"
font_size: 30
on_release:
root.manager.transition.direction = "down"
root.submitbutton()
background_normal: ''
background_color: 1, .3, .4, .85
一些帮助会很棒!我已经尝试过使用导入sm
,但这只会引入更多错误。Main2.py
from GUI.MainGUI import sm
编辑:我的文件夹结构如下,项目根文件夹:project/GUI/MainGUI.py、gui.kv和project/Logini/Main/Main2.py。调用类是有效的,所以我假设导入类没有错误。
解决方案
尝试:
from project.GUI.MainGUI import sm
推荐阅读
- node.js - 如何让我的系统使用 Homebrew 安装的节点版本?
- postgresql - 为什么我在加入横向功能时不能参考表格?
- vue.js - 如何将图像路径从标签传递到 Vue 组件
- c++ - 为单元测试调用继承类的私有成员
- python - 我需要制作一个 python 项目,但我知道 C#,但不知道如何转换它
- python - 在命令行中运行 python 文件没有输出
- c# - .net MVC中是否有任何方法可以将数据库日期导出到不在本地机器中的文件中,并作为文件附件与电子邮件一起发送。?
- sql - 为什么在窗口函数中使用 GROUP BY
- sql - SQL Server 中的 AVG
- java - 处理中带有 loadPixels() 的渐变