图像按钮Kivy

2024-09-26 22:54:02 发布

您现在位置:Python中文网/ 问答频道 /正文

正在尝试从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()

Tags: fromimportselfurlif按钮printlayout
1条回答
网友
1楼 · 发布于 2024-09-26 22:54:02
layout.add_widget(ImageButton.vsOpen())

我不知道你希望这个做什么,但这毫无意义vsOpen是ImageButton类的一个方法,您应该只从类实例调用它,而不是从类本身调用它(除非您知道自己在做什么并且有一个真正的理由)

即使它以某种方式运行了这个方法,它也不会返回可以添加到布局中的小部件,因此不清楚您实际想要实现什么

相关问题 更多 >

    热门问题