python-3.x - 使用 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()
解决方案
background_color
不是要调用的方法,它是ListProperty。也许您打算使用:
vsCode.background_color = [0, 255, 255, 0.85]
此外,当您将方法绑定到 a时,会以实例作为参数Button
调用该方法。Button
因此,您只需将vsOpen()
方法的定义更改为:
def vsOpen(self, *args):
推荐阅读
- ecmascript-6 - ES6:如何在添加重复值的同时在数组中推送唯一值?
- angular - Angular 6 http.get - 在控制台中显示返回的对象
- postgis - PostGIS:找到多边形和圆之间交点的优化方法
- swift - iOS Firebase Twitter 登录每次都请求权限
- php - PHP Imagick 无法使用 Microsoft EDGE 生成的 pdf
- mysql - 如何更改 sequelize 内连接输出格式
- javascript - 为什么阻塞事件循环不会阻塞css动画?
- c# - 如何将依赖项注入静态类
- javascript - Angular 4(业力)测试输入值到输入字段
- javascript - 将 Vueitfy 用户界面嵌入现有网站