正在尝试从LauncherApp()中的ImageButton调用vsOpen;其目标是使按钮上有图像,以响应输入。调用VsOpen表示,如果self被放在“ImageButton没有self属性”中,那么我缺少self作为参数。正如你可以看到下面我有正常的按钮工作,但我似乎不能正确地创建一个按钮的形象。有人能解释一下我该怎么做吗
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.config import Config
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.uix.behaviors import ButtonBehavior
from cryptography.fernet import Fernet
from colorama import Fore, Style
import webbrowser as browser
import subprocess
import os
PATHs=[#other_program_names/locations_go_here]
class ImageButton(ButtonBehavior, Image):
def on_press(self):
for x in range(0, 2):
iD=Fernet.generate_key()
cipher = Fernet(iD)
url = input(">")
crypt_url=cipher.encrypt(bytes(url, "utf-8"))
if url != "":
if url.startswith("www.", 0,4):
dcrypt_url=cipher.decrypt(bytes(crypt_url))
browser.open_new_tab(dcrypt_url)
print(Fore.BLUE+"Accessing " + url + "..")
else:
print("String given was not a url")
quit
else:
print(Fore.RED+">no url was entered..")
quit
def vsOpen(self):
try:
if os.path.isfile(PATHs[0]) == 1:
self.x=subprocess.call(PATHs[0])
else:
print(Fore.RED+"vsCode was not found"+Style.BRIGHT)
except TypeError:
print("Type error has occured at vsOpen")
quit
class LauncherApp(App):
def build(self):
layout=FloatLayout(size=(200,200))
#Normal Buttons were here
layout.add_widget(ImageButton.vsOpen())
layout.add_widget(ImageButton.on_press())
return layout
root = LauncherApp()
if __name__ == "__main__":
root.run()
我不知道你希望这个做什么,但这毫无意义
vsOpen
是ImageButton类的一个方法,您应该只从类实例调用它,而不是从类本身调用它(除非您知道自己在做什么并且有一个真正的理由)即使它以某种方式运行了这个方法,它也不会返回可以添加到布局中的小部件,因此不清楚您实际想要实现什么
相关问题 更多 >
编程相关推荐