kivy - python - Spinner输出文本/字符串如何使用
我想把从下拉框(Spinner)中选中的字符串值用到标签(Label)的文本上,但在下面的代码中没能做到。谁能帮帮我!!!
class LoginScreen(GridLayout):
def __init__(self, **kwargs):
tex=' '
jj=0
super(LoginScreen, self).__init__(**kwargs)
self.cols = 2
self.add_widget(Label(text='Pressure (barg)',height=11 ))
self.username = TextInput(multiline=False, height=11)
self.add_widget(self.username)
self.add_widget(Label(text='Temperature (deg C)'))
self.password = TextInput(multiline=False, height=11)
self.add_widget(self.password)
spinner = Spinner(text='Select..', values=s, size_hint=(None, None))
def show_selected_value(spinner, text):
print('The spinner','have text', text)
jj=0
for j in range(0,852,1):
if b3112012[j][6]==text:
tex=text
jj=j+1
break
else:
pass
print('The index of selected is ', jj)
print(tex)
tex=text
print('Index is:', jj)
spinner.bind(text=show_selected_value)
self.add_widget(spinner)
#print('value' , show_selected_value)
dlabel=Label(text="%s" % str(spinner.text))
self.add_widget(dlabel)
倒数第二行,也就是 "dlabel=Label(text = "%s" % str(spinner.text))
,在程序运行时没有把选中的下拉框文本显示在标签的文本里。我该怎么获取下拉框的索引或字符串值,以便在代码的其他地方使用呢?
1 个回答
2
我觉得你的代码缩进让人很难理解你的初始化方法。无论如何,关键是要保存你想要设置文本的标签(Label)控件的实例。在你的例子中,这个控件是 dlabel。正确的代码应该是这样的:
class LoginScreen(GridLayout): def __init__(self, **kwargs): super(LoginScreen, self).__init__(**kwargs) self.cols = 2 self.add_widget(Label(text='Pressure (barg)',height=11 )) self.username = TextInput(multiline=False, height=11) self.add_widget(self.username) self.add_widget(Label(text='Temperature (deg C)')) self.password = TextInput(multiline=False, height=11) self.add_widget(self.password) spinner = Spinner(text='Select..', values=s, size_hint=(None, None)) self.add_widget(spinner) self.dlabel = Label(text="%s" % str(spinner.text)) self.add_widget(self.dlabel) def show_selected_value(spinner, text): """ # dunno what is that for. jj=0 for j in range(0,852,1): if b3112012[j][6]==text: tex=text jj=j+1 break """ self.dlabel.text = text spinner.bind(text=show_selected_value)