当我的加载文件是.kv文件时,它正在运行,但我无法打开屏幕,所以我尝试了字符串加载文件,但现在它显示了此错误。
日志有效负载={'uname':self.root.ids.user.text,'psw':self.root.ids.password.text}文件“c:\users\armof\pycharmprojects\screen\main.py”,第142行,在kivy.properties.observedict.getattr attributeerror:“super”对象没有属性“getattr”
感谢您的努力:)
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen,ScreenManager
import requests
screen_helper = """
ScreenManager:
MenuScreen:
ProfileScreen:
<MenuScreen>:
name : "login"
Image:
source:"C:/arka.png"
MDCard:
size_hint:None,None
size: 400,600
pos_hint : {"center_x":0.5,"center_y":0.5}
elevation:10
padding:25
spacing:25
orientation : 'vertical'
Image:
source:"C:/burbantgrilogo.png"
pos:300,380
MDLabel:
text:""
id:welcome_label
font_size:30
halign : 'center'
size_hint_y:None
height:self.texture_size[1]
padding_y:15
MDTextFieldRound:
id: user
hint_text:"username"
icon_right:"account"
size_hint_x:None
width: 200
font_size:18
pos_hint:{"center_x":0.5}
MDTextFieldRound:
id: password
hint_text:"password"
icon_right:"eye-off"
size_hint_x:None
width: 200
font_size:18
pos_hint:{"center_x":0.5}
password:True
MDRoundFlatButton:
text:"LOG IN"
font_size: 12
pos_hint:{"center_x":0.5}
on_press:app.logger()
MDRoundFlatButton:
text:"CLEAR"
font_size: 12
pos_hint:{"center_x":0.5}
on_press:app.clear()
Widget:
size_hint_y: None
height: 70
<ProfileScreen>:
name:"Teklif"
Image:
source:"C:/arka.png"
MDCard:
size_hint:None,None
size: 400,600
pos_hint : {"center_x":0.5,"center_y":0.5}
elevation:10
padding:25
spacing:25
orientation : 'vertical'
Image:
source:"C:/burbantgrilogo.png"
pos:300,380
MDRoundFlatButton:
text:"OPEN"
font_size: 12
pos_hint:{"center_x":0.5}
on_release: root.current = "login"
MDRoundFlatButton:
text:"NEW"
font_size: 12
pos_hint:{"center_x":0.5}
Widget:
size_hint_y: None
height: 130
"""
class MenuScreen(Screen):
pass
class ProfileScreen(Screen):
pass
sm = ScreenManager()
sm.add_widget(MenuScreen(name='login'))
sm.add_widget(ProfileScreen(name='Teklif'))
class MainApp(MDApp):
def build(self):
self.theme_cls.theme_style = "Light"
self.theme_cls.primary_palette = "Red"
screen = Builder.load_string(screen_helper)
return screen
def logger(self, *args):
payload={'Uname': self.root.ids.user.text, 'psw': self.root.ids.password.text}
print(payload)
r = requests.get(f"http://burbant.com/otomasyon?Uname={self.root.ids.user.text}&psw={self.root.ids.password.text}")
print(r.text)
if r.text == 'True':
self.root.ids.welcome_label.text = f'Hoşgeldin {self.root.ids.user.text}!'
sm.switch_to(screen='Teklif')
else:
self.root.ids.welcome_label.text = f'Hatalı'
def clear(self):
self.root.ids.welcome_label.text = ""
self.root.ids.user.text = ""
self.root.ids.password.text = ""
MainApp().run()
1条答案
按热度按时间0pizxfdo1#
问题是
self.root.ids
是空字典,因此尝试访问该空字典中的任何键将导致该错误。这个ids
您正在尝试访问的文件位于MenuScreen
示例,您可以使用get_screen()
方法ScreenManager
,例如:代码中的其他地方也有相同的错误。无论你在哪里
self.root.ids
,则需要应用类似的逻辑。