python - Kivy Spinner 未立即更新文本值的问题

标签 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()

最佳答案

该行为完全符合预期: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/

相关文章:

python - Kivy - NotImplementedError : tostring() has been removed

python - 在 Ubuntu 中将文件夹及其内容复制到 USB 内存棒

python - Kivy 弹出窗口显示背景小部件

python - Readline 和线程

javascript - Jquery 在 .load() 之前显示图像

Java:在另一个类中使用一个类中的变量

android - 如何根据微调项目选定的位置显示值列表?

python - Kivy - 试图理解 Clock.schedule_interval

python - Pandas DataFrame 聚合列,其他列的名称作为值

python函数使用多个默认值或根本没有默认值