我正在运行一个快速的小测试,通过将值打印到TextInput来显示当前所选的微调器值。
当点击微调器时,它会打开下拉,就像我点击全部显示选项一样,它将它设置为活动状态(意味着它是当前选择的值)并且下拉关闭但是它似乎没有正确注册,因为它不会进入该功能,直到我打开下拉列表并再次点击该值。
有关如何修复此问题的任何建议吗?
from kivy.uix.spinner import Spinner
from kivy.uix.widget import Widget
import kivy.event
from kivy.uix.textinput import TextInput
from kivy.app import App
from kivy.core.window import Window
import kivy
def Display_All(s):
displayWindow.text = s
return None
def Pick(event):
val = fileMenu.text
if val == 'Display All':
Display_All(val)
Root = Widget(size = (890, 505))
displayWindow = TextInput(pos = (250, 30), size = (620, 470))
fileMenu = Spinner(text = 'File',
values = ('File', 'Display All', 'Print', 'Search Specific'),
size = (120, 44), pos = (0, 460))
fileMenu.bind(on_press = Pick)
Root.add_widget(displayWindow)
Root.add_widget(fileMenu)
class ExampleApp(App):
def build(self):
return Root
Window.size = (890, 505)
if __name__ == '__main__':
ExampleApp().run()
答案 0 :(得分:2)
完全需要这种行为:on_press
在点击时触发,而不是在text
属性发生变化时触发。因此,您应该将Pick
更改为:
def Pick(sender, val):
if val == 'Display All':
Display_All(val)
(请注意val
已经包含text
值,因此无需显式检索它。并使用
Pick
绑定到事件
fileMenu.bind(text = Pick)