使用Kivy Spinner时不会立即更新文本值

时间:2016-06-18 17:29:29

标签: python spinner kivy

我正在运行一个快速的小测试,通过将值打印到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()

1 个答案:

答案 0 :(得分:2)

完全需要这种行为:on_press在点击时触发,而不是在text属性发生变化时触发。因此,您应该将Pick更改为:

def Pick(sender, val):
    if val == 'Display All':
        Display_All(val)

(请注意val已经包含text值,因此无需显式检索它。并使用

Pick绑定到事件
fileMenu.bind(text = Pick)