2016-06-18 29 views
1

我正在运行一个快速小测试,通过将值打印到TextInput来显示当前选定的微调值。Kivy Spinner问题不立即更新文本值

当单击微调框时,它会打开下拉框,就像我点击“全部显示”选项时一样,它将它设置为活动状态(意思是当前选定的值),并且下拉框关闭, t似乎没有正确注册,因为它不会进入函数,直到我打开下拉菜单并再次单击该值。

有关如何解决此问题的任何建议?

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

你可以把它变成[mcve]吗? – zeeMonkeez

+0

更新了可运行版本的代码,很抱歉! – Afflicted

回答

2

行为是完全预期:on_press触发在点击的时候,text属性更改时没有。因此,你应该改变Pick到类似:

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

(注意:val将已经包含了text值,因此无需显式地检索它)。并绑定Pick与事件

fileMenu.bind(text = Pick)