我正在运行一个快速的小测试,通过将值打印到 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()
最佳答案
该行为完全符合预期:on_press
在单击时触发,而不是在 text
属性更改时触发。因此,您应该将 Pick
更改为:
def Pick(sender, val):
if val == 'Display All':
Display_All(val)
(请注意,val
已包含 text
值,因此无需显式检索它)。并将 Pick
绑定(bind)到事件
fileMenu.bind(text = Pick)
关于python - Kivy Spinner 未立即更新文本值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899786/