首页 > 解决方案 > 使用 Kivy 模块的 Py 程序

问题描述

想知道我为什么收到

TypeError:“ObservableList”对象不可调用。当 background_color 被调用时。

以及当 vsCode.background([]) 被删除时,我觉得我错过了一些简单的东西,但是我不能把手指放在上面,谢谢你:

TypeError:vsOpen() 接受 1 个位置参数,但给出了 2 个

    import os
    import sys
    import subprocess
    import webbrowser as browser
    from kivy.app import App
    from kivy.uix.gridlayout import GridLayout
    from kivy.uix.image import Image
    from kivy.uix.label import Label
    from kivy.uix.textinput import TextInput
    from kivy.uix.button import Button
    from cryptography.fernet import Fernet
    from colorama import Fore, Style

    class MyApp(App):
        def build(self):
            vsCode=Button(text="vsCode", size=(45,45))
            vsCode.background_normal = ""
            vsCode.background_color([0,255,255,0.85])
            vsCode.bind(on_press=self.vsOpen)
            return vsCode

        def encryption(self, on):
            iD = Fernet.generate_key()
            cipher = Fernet(iD)
            message = input(b">: ")
            e_message = cipher.encrypt(bytes(message, "utf-8"))
            if len(e_message) != 0:
              if on == 1:
                print(e_message)
              else:
                dcrypt = cipher.decrypt(bytes(message, "utf-8"))
                print(dcrypt)
            else:
                print("Encryption is not working.")

        def mURLs(self):
           for x in range(0, 2):
              url = input(">") 
              if len(url)!=0:
                  browser.open_new_tab(url)
                  print(Fore.BLUE+"Accessing " + url + "..")
              else:
                  print(Fore.RED+">no url was entered..")
                  sys.exit()

        def vsOpen(self):
           try:
             if os.path.isfile(PATHs[0]) == 1:
                x=subprocess.call(PATHs[0])
             else:
                print(Fore.RED+"vsCode was not found"+Style.BRIGHT)
           except TypeError:
                print("Type error has occured at vsOpen")

root = MyApp()
if __name__ == "__main__":
    root.run()

标签: python-3.xclassbuttonkivytypeerror

解决方案


background_color不是要调用的方法,它是ListProperty。也许您打算使用:

vsCode.background_color = [0, 255, 255, 0.85]

此外,当您将方法绑定到 a时,会以实例作为参数Button调用该方法。Button因此,您只需将vsOpen()方法的定义更改为:

def vsOpen(self, *args):

推荐阅读