kivy - python - Spinner输出文本/字符串如何使用

3 投票
1 回答
1510 浏览
提问于 2025-04-18 06:13

我想把从下拉框(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)

撰写回答