【问题标题】:Kivy spinner on_text_changed eventKivy 微调器 on_text_changed 事件
【发布时间】:2020-10-28 15:48:34
【问题描述】:

我想在spinner 更改值时对事件做出反应并捕获该值。 这是最小的可重现示例:

import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.spinner import Spinner

class MyApp(App):
    def build(self):

        mainbox = BoxLayout(orientation="horizontal",
                            spacing=15,
                            padding=5)
        self.spinner_languages = Spinner(text ="", 
                values =("Python", "Java", "C++", "C", "C#", "PHP"), 
                size_hint = (0.3, 0.2)
                # on_text_changed = self.spinner_text_changed
                )
        mainbox.add_widget(self.spinner_languages)

        return mainbox

    #def spinner_text_changed(self, text):
    #    self.language = text
    #    print(self.language)

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

注释行是我想要修复的。

【问题讨论】:

    标签: kivy spinner


    【解决方案1】:

    你只需要在text属性发生变化时,使用bind触发spinner_text_changed()方法,如下:

    from kivy.app import App
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.spinner import Spinner
    
    class MyApp(App):
        def build(self):
    
            mainbox = BoxLayout(orientation="horizontal",
                                spacing=15,
                                padding=5)
            self.spinner_languages = Spinner(text ="",
                    values =("Python", "Java", "C++", "C", "C#", "PHP"),
                    size_hint = (0.3, 0.2)
                    )
            self.spinner_languages.bind(text=self.spinner_text_changed)
            mainbox.add_widget(self.spinner_languages)
    
            return mainbox
    
        def spinner_text_changed(self, spinner, text):
           self.language = text
           print(self.language)
    
    if __name__ == "__main__":
        MyApp().run()
    

    【讨论】:

    • 我相信它可以工作,但是有没有一些技巧可以在桌面上用鼠标选择语言(例如 Python)?我相信它在点击手机时可以工作,但在电脑屏幕上我无法实现除默认之外的其他选择。
    • 只需点击Spinner,就会显示选项。
    • 当我用鼠标单击微调器选项时,将显示,但我无法选择任何选项。它会很快崩溃。
    • 我无法重现这种行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多