KIVY 中 super() 类中的类型错误

如何解决KIVY 中 super() 类中的类型错误

我试图创建一个弹出窗口,显示参数中给定的值。 我的代码是:

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout

#Import widgets
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.popup import Popup

#Importing the clipboard
from kivy.core.clipboard import Clipboard

'''
The popup that shows the encoded or the decoded text,with a copy and paste button
'''
class Ans_pop(Popup):
    def __init__(self,text,**kwargs):
        self.a = super(Ans_pop,self).__init__(**kwargs)

        #The title of the popup
        self.a['title'] = 'Result'

        #The main layout that is shown on the popup
        #Note* Only one layout can be added in popup
        self.box = BoxLayout(orientation='vertical')

        #The text to be displayed
        self.result = text

        #The label that displays the text to be displayed
        self.res_lab = Label(text = self.result,font_size = 50)

        #The boxLayout that displayes the copy and paste button on the boxLayout
        self.a3 = BoxLayout(orientation='horizontal')
        def reposition_b3(a3,*args):
            self.btn_3.pos = self.a3.x,self.a3.y
            self.btn_3.size = self.a3.width,self.a3.height/2

        #The copy button:
        self.btn_3 = Copy_Btn(text,text = 'Copy',size = (self.a3.width/2,self.a3.height),pos=(self.a3.x,self.a3.y))

        #The resize of the button
        self.a3.bind(on_size=reposition_b3,on_pos=reposition_b3)

        #The container of the buttons:
        self.a3.add_widget(btn_3)

        #The label and the container of labels in the main boxcontainer
        self.box.add_widget(self.res_lib)
        self.box.add_widget(self.a3)


        ###  ADD THE MAIN BOX CONTAINER IN THE POPUP WINDOW  ##
        self.a.content = self.box

'''
The copy button feature,that appends the text in the instance to the clipboard
'''
class Copy_Btn(Button):
    def __init__(self,instance,**kwargs):
        self.a = super(Copy_Btn,self).__init__(**kwargs)
        self.instance = instance
        
    def on_release(self):
        Clipboard.copy(self.instance)

class APP(App):
    def build(self):
        a = Ans_pop('This is the text in popup')
        a.show()
        return a

出于某种原因,我不想展示您的某些代码。请原谅我! 但是别担心,因为要运行弹出窗口,给定的代码已经足够了! 当我运行此代码时:

[INFO   ] [Logger      ] Record log in C:\Users\new\.kivy\logs\kivy_21-01-15_101.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.0
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.3.1
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.9.0 (tags/v3.9.0:9cf6752,Oct  5 2020,15:23:07) [MSC v.1927 32 bit (Intel)]
[INFO   ] [Python      ] Interpreter at "C:\Users\new\AppData\Local\Programs\Python\Python39-32\pythonw.exe"
[INFO   ] [Factory     ] 186 symbols loaded
[INFO   ] [Image       ] Providers: img_tex,img_dds,img_sdl2,img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.5.13474 Compatibility Profile Context 22.19.162.4'>
[INFO   ] [GL          ] OpenGL vendor <b'ATI Technologies Inc.'>
[INFO   ] [GL          ] OpenGL renderer <b'AMD Radeon(TM) R4 Graphics'>
[INFO   ] [GL          ] OpenGL parsed version: 4,5
[INFO   ] [GL          ] Shading version <b'4.50'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed,single mode,not docked
[INFO   ] [Clipboard   ] Provider: winctypes
[INFO   ] [Base        ] Start application main loop
[INFO   ] [GL          ] NPOT texture support is available
Traceback (most recent call last):
   File "F:\Python tries#1\Simple Cryptography (Kivy)\Cryptography App.py",line 197,in <module>
     Crypto().run()
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\app.py",line 950,in run
     runTouchApp()
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\base.py",line 582,in runTouchApp
     EventLoop.mainloop()
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\base.py",line 347,in mainloop
     self.idle()
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\base.py",line 391,in idle
     self.dispatch_input()
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\base.py",line 342,in dispatch_input
     post_dispatch_input(*pop(0))
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\base.py",line 308,in post_dispatch_input
     wid.dispatch('on_touch_up',me)
   File "kivy\_event.pyx",line 709,in kivy._event.EventDispatcher.dispatch
   File "C:\Users\new\AppData\Local\Programs\Python\Python39-32\lib\site-packages\kivy\uix\behaviors\button.py",line 179,in on_touch_up
     self.dispatch('on_release')
   File "kivy\_event.pyx",in kivy._event.EventDispatcher.dispatch
   File "F:\Python tries#1\Simple Cryptography (Kivy)\Cryptography App.py",line 95,in on_release
     Ans_pop(encoded_text)
   File "F:\Python tries#1\Simple Cryptography (Kivy)\Cryptography App.py",line 38,in __init__
     self.a['title'] = 'Result'
 TypeError: 'NoneType' object does not support item assignment

在此突出显示错误是:

   File "F:\Python tries#1\Simple Cryptography (Kivy)\Cryptography App.py",in __init__
     self.a['title'] = 'Result'
 TypeError: 'NoneType' object does not support item assignment

如何修复错误?

解决方法

代码:

class Ans_pop(Popup):
    def __init__(self,text,**kwargs):
        self.a = super(Ans_pop,self).__init__(**kwargs)

        #The title of the popup
        self.a['title'] = 'Result'

应改为:

class Ans_pop(Popup):
    def __init__(self,**kwargs):
        super(Ans_pop,self).__init__(**kwargs)

        #The title of the popup
        self.title = 'Result'

__init__() 方法返回 None,导致您的错误。而 title 只是 Popup 的一个属性。由于您的 Ans_pop 扩展了 Popup,因此 title 只是 Ans_pop 的一个属性。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-