![](/img/trans.png)
[英]kivymd: AttributeError: 'super' object has no attribute '__getattr__'
[英]AttributeError: 'super' object has no attribute '__getattr__' error at kivymd request app
它正在運行,而我的加載文件是 .kv 文件,但我無法在條件下切換屏幕,所以我嘗試了字符串加載文件,但現在它顯示了這個錯誤。
文件“C:\\Users\\armof\\PycharmProjects\\screen\\main.py”,第 142 行,記錄器 payload={'Uname': self.root.ids.user.text, 'psw': self.root.ids。 password.text} 文件“kivy\\properties.pyx”,第 864 行,在 kivy.properties.ObservableDict 中。 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()
問題在於self.root.ids
是一個空字典,因此嘗試訪問該空字典中的任何鍵都會導致該錯誤。 您嘗試訪問的ids
位於MenuScreen
實例中,您可以使用ScreenManager
的get_screen()
方法訪問該get_screen()
,如下所示:
def logger(self, *args):
menuscreen = self.root.get_screen('login')
payload = {'Uname': menuscreen.ids.user.text, 'psw': menuscreen.ids.password.text}
print(payload)
.
.
.
您的代碼中的其他地方也有同樣的錯誤。 無論您在哪里擁有self.root.ids
,您都需要應用類似的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.