【发布时间】:2023-01-15 05:57:51
【问题描述】:
我在使用 GUI 库 Kivy 在 Python 上编码时遇到了未知问题。问题是当我执行这段代码时
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.scatter import Scatter
from kivy.uix.textinput import TextInput
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.behaviors import ButtonBehavior
from pathlib import Path
class SignUpScreen(Screen):
def verify_user(self, email, username):
pass
class SignInUsernameScreen(Screen):
def signin_username(self, uname):
pass
class SignInMasterKeyScreen(Screen):
def check_masterkey(self, mk):
pass
class RootWidget(ScreenManager):
pass
class MainApp(App):
def build(self):
Builder.load_file('design.kv')
return RootWidget()
if __name__ == '__main__':
MainApp().run()
这是 design.kv 文件:
<SignUpScreen>:
GridLayout:
cols: 1
GridLayout:
cols: 1
padding: 15, 15
spacing: 20, 20
Label:
text: 'User Sign Up'
font_size: '20sp'
TextInput:
id: username
hint_text: 'Username'
TextInput:
id: email
hint_text: 'Email'
RelativeLayout:
Button:
text: 'Create an account'
size_hint: 0.3, 0.5
pos_hint: {'center_x': 0.5, 'center_y': 0.6}
on_press: root.verify_user(root.ids.username.text, root.ids.email.text)
<SignInUsernameScreen>:
GridLayout:
cols: 1
GridLayout:
cols: 1
padding: 15, 15
spacing: 20, 20
Label:
text: 'User Sign In'
font_size: '20sp'
TextInput:
id: username
hint_text: 'Username'
RelativeLayout:
Button:
text: 'Sign In'
pos_hint: {'center_x': 0.5, 'center_y': 0.6}
on_press: root.signin_username(root.ids.username.text)
Label:
id: username_wrong
text: ''
<SignInMasterkeyScreen>:
GridLayout:
cols: 1
GridLayout:
cols: 1
padding: 15, 15
spacing: 20, 20
Label:
text: 'User Login'
font_size: '20sp'
TextInput:
id: masterkey
password: True
hint_text: 'MasterKey'
RelativeLayout:
Button:
text: 'Login master key'
pos_hint: {'center_x': 0.5, 'center_y': 0.6}
on_press: root.signin_masterkey(root.ids.masterkey.text)
Label:
id: masterkey_wrong
text: ''
GridLayout:
cols: 2
size_hint: 0.2, 0.2 # 20% of window space
padding: 10, 10
spacing: 10, 0
Button:
text: 'Forgot Password'
background_color: 1, 1, 1, 0
opacity: 1 if self.state == 'normal' else 0.5
color: 0.1, 0.7, 1, 1
Button:
text: 'Back'
background_color: 1, 1, 1, 0
opacity: 1 if self.state == 'normal' else 0.5
color: 0.1, 0.7, 1, 1
<RootWidget>:
SignUpScreen:
name: 'signup_screen'
SignInScreen:
name: 'signin_screen'
SignInMasterKeyScreen:
name: 'signin_masterkey'
我遇到了这种类型的错误
[INFO ] [Logger ] Record log in /Users/niknmirosh/.kivy/logs/kivy_22-09-28_38.txt
[INFO ] [Kivy ] v2.1.0
[INFO ] [Kivy ] Installed at "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/__init__.py"
[INFO ] [Python ] v3.9.12 (main, Apr 5 2022, 01:53:17)
[Clang 12.0.0 ]
[INFO ] [Python ] Interpreter at "/Users/niknmirosh/opt/miniconda3/bin/python3"
[INFO ] [Logger ] Purge log fired. Processing...
[INFO ] [Logger ] Purge finished!
[INFO ] [Factory ] 189 symbols loaded
[INFO ] [Image ] Providers: img_tex, img_imageio, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO ] [Text ] Provider: sdl2
[INFO ] [Window ] Provider: sdl2
[INFO ] [GL ] Using the "OpenGL ES 2" graphics system
[INFO ] [GL ] Backend used <sdl2>
[INFO ] [GL ] OpenGL version <b'2.1 INTEL-18.8.4'>
[INFO ] [GL ] OpenGL vendor <b'Intel Inc.'>
[INFO ] [GL ] OpenGL renderer <b'Intel(R) Iris(TM) Plus Graphics 655'>
[INFO ] [GL ] OpenGL parsed version: 2, 1
[INFO ] [GL ] Shading version <b'1.20'>
[INFO ] [GL ] Texture max size <16384>
[INFO ] [GL ] Texture max units <16>
[INFO ] [Window ] auto add sdl2 input provider
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
Traceback (most recent call last):
File "/Users/niknmirosh/Desktop/PasswordManager (Demo)/main.py", line 46, in <module>
MainApp().run()
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/app.py", line 954, in run
self._run_prepare()
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/app.py", line 924, in _run_prepare
root = self.build()
File "/Users/niknmirosh/Desktop/PasswordManager (Demo)/main.py", line 41, in build
Builder.load_file('/Users/niknmirosh/Desktop/PasswordManager (Demo)/design.kv')
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/builder.py", line 305, in load_file
return self.load_string(data, **kwargs)
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/builder.py", line 372, in load_string
parser = Parser(content=string, filename=fn)
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/parser.py", line 483, in __init__
self.parse(content)
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/parser.py", line 593, in parse
objects, remaining_lines = self.parse_level(0, lines)
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/parser.py", line 696, in parse_level
_objects, _lines = self.parse_level(
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/parser.py", line 696, in parse_level
_objects, _lines = self.parse_level(
File "/Users/niknmirosh/opt/miniconda3/lib/python3.9/site-packages/kivy/lang/parser.py", line 756, in parse_level
if current_property[:3] == 'on_':
TypeError: 'NoneType' object is not subscriptable
我可能错过了什么重要的事情?我几乎按照文档做了所有的事情,但错误仍然出现。
【问题讨论】:
-
请提供更多信息。错误消息是否标识了发生错误的特定行?贴出完整的错误信息。
-
我编辑错误