【发布时间】:2020-07-20 17:40:42
【问题描述】:
如何清除 kivy Filechooser 的只读列表属性 selection 或有任何解决方法?问题是即使我返回到 Filechooser 窗口,文件仍保持选中状态,这真的很烦人。
【问题讨论】:
标签: python user-interface kivy filechooser
如何清除 kivy Filechooser 的只读列表属性 selection 或有任何解决方法?问题是即使我返回到 Filechooser 窗口,文件仍保持选中状态,这真的很烦人。
【问题讨论】:
标签: python user-interface kivy filechooser
即使 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 窗口屏幕时,没有选择。
【讨论】:
为了避免在点击元素时在应用屏幕上绘制恼人的红点,请修改 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
【讨论】: