【问题标题】:How to unselect multiple files selected in kivy filechooser List View如何取消选择在 kivy filechooser 列表视图中选择的多个文件
【发布时间】:2020-07-20 17:40:42
【问题描述】:

如何清除 kivy Filechooser 的只读列表属性 selection 或有任何解决方法?问题是即使我返回到 Filechooser 窗口,文件仍保持选中状态,这真的很烦人。

【问题讨论】:

    标签: python user-interface kivy filechooser


    【解决方案1】:

    即使 kivy filechooser 的 selection 是只读的,您也可以通过将 selection 值设置为 [] 来清除选择

    代码示例:

    # import
    from kivy.app import App
    from kivy.lang import Builder
    from kivy.uix.screenmanager import Screen, ScreenManager
    
    
    class SM(ScreenManager):
        pass
    
    
    class Screen1(Screen):
        def selected(self, filename):
            # displaying seleted file name as a label
            self.ids.lb.text = str(filename)
    
    
    class Screen2(Screen):
        def deselect_action(self):
            # access screen1
            s1 = self.manager.get_screen('first')
            # resetting file selection
            s1.ids.select_file.selection = []
    
    # kivy file
    kv = Builder.load_string("""
    SM:
        Screen1:
        Screen2:
    
    <Screen1>:
        name: 'first'
    
        BoxLayout:
            orientation: 'vertical'
        
            FileChooserIconView:
                id: select_file
                on_selection: root.selected(select_file.selection)
            Label:
                id: lb
                text: 'default'
            Button:
                text: 'go to second screen'
                on_press: 
                    app.root.current = 'second'
    
    
    <Screen2>:
        name: 'second'
    
        Button:
            text: 'go back'
            on_press:
                app.root.current = "first"
                root.deselect_action()
    """)
    
    
    
    class filechoosing(App):
        def build(self):
            return kv
    
    filechoosing().run()
    

    在这里您可以看到,标签采用所选文件的值。返回到 Filechooser 窗口屏幕时,没有选择。

    【讨论】:

      【解决方案2】:

      为了避免在点击元素时在应用屏幕上绘制恼人的红点,请修改 build 方法:

      def build(self):
          # avoiding red dot put on Kivy screen after mouse right-click
          from kivy import Config
          Config.set('input', 'mouse', 'mouse,disable_multitouch')
          
          return kv
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-13
        • 1970-01-01
        • 2014-01-23
        • 2017-01-04
        • 1970-01-01
        相关资源
        最近更新 更多