【问题标题】:Button doing on_release action twice in kivy python按钮在 kivy python 中执行两次 on_release 动作
【发布时间】:2021-08-02 17:42:32
【问题描述】:

我正在尝试制作一个可以自动化 Instagram 页面的应用程序,并且我已经准备好程序的脚本,但只需要将其实现到 GUI 中。为此,我正在使用 Kivy。但是,我只需要为此向 API 发送一个请求。当我单击一个按钮时,它会触发两次附加到按钮的 on_release 的命令。我该如何解决这个问题?

简化的 Python 脚本:

from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.lang import Builder


class StartScreen(Screen):
    pass


class WindowManager(ScreenManager):
    pass


class BruhApp(MDApp):
    def build(self):
        self.root = Builder.load_file("bruh.kv")


if __name__ == '__main__':
    BruhApp().run()

.kv 文件:

WindowManager:
    StartScreen:

<StartScreen>:
    name: "start"
    FloatLayout:

        MDLabel:
            text: "Welcome to the Instagram Page Automator!"
            font: "RobotoThin"
            font_style: "H5"
            halign: "center"
            size_hint:0.9,0.7
            color: 0,0,0,0.5
            pos_hint:{"center_x":0.5,"y":0.5}


        MDFillRoundFlatButton:
            md_bg_color: 0, 1, 0.6, 1
            text:"Continue"
            font: "RobotoThin"
            size_hint:0.4,0.07
            pos_hint:{"center_x":0.5,"y":0.1}
            on_release:
                print("yes")

每次我按下按钮时,此脚本都会为我打印两次“是”。

【问题讨论】:

    标签: python python-3.x kivy kivy-language kivymd


    【解决方案1】:

    如果文件名称正确,kivy 系统会自动为App 加载kv 文件(请参阅documentation)。由于您的 kv 文件名称正确,因此会自动加载。但是由于您还使用以下行显式加载它:

    self.root = Builder.load_file("bruh.kv")
    

    kv 文件实际上被加载了两次,这导致某些东西被实例化了两次。尝试用简单的pass 替换build() 方法。

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 2012-09-23
      • 1970-01-01
      • 2020-06-16
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      相关资源
      最近更新 更多