2017-02-04 6 views
0

Я пытаюсь отфильтровать варианты со списком на основе введенного ввода и назначить новый список вариантов. Выбор, который я могу назначить, но попытаюсь присвоить значение, которое он дает ниже: pydev debugger: start (pid: 6372) Traceback (последний последний звонок): Файл «C: \ WORK \ ATEWorkSpace \ TRY_ERROR \ combobox_working .py ", строка 31, в text_return self.st.setValue (textEntered) AttributeError: объект ComboBox не имеет атрибута 'setValue' Traceback (последний последний вызов): Файл« C: \ WORK \ ATEWorkSpace \ TRY_ERROR \ combobox_working.py», строка 31, в text_return self.st.setValue (textEntered) AttributeError: объект 'ComboBox' не имеет атрибута 'SetValue'заполнять фильтрованные варианты в combobox с помощью wxpython

Мой код, как показано ниже:

!/USR/бен/питон

20_combobox.py

import wx 
import wx.lib.inspection 

class MyFrame(wx.Frame): 
    def __init__(self, *args, **kwargs): 
     wx.Frame.__init__(self, *args, **kwargs) 

     self.choices = ['grandmother', 'grandfather', 'cousin', 'aunt', 'uncle', 'grandson', 'granddaughter'] 
     for relative in ['mother', 'father', 'sister', 'brother', 'daughter', 'son']: 
      self.choices.extend(self.derivedRelatives(relative)) 
     self.st = wx.ComboBox(self, -1, choices = self.choices, style=wx.CB_SORT) 

     self.st.Bind(wx.EVT_TEXT, self.text_return) 
     self.ignoreEvtText = False 

    def text_return(self, event): 
     if self.ignoreEvtText: 
      self.ignoreEvtText = False 
      return 
     filteredList=[] 
     textEntered=event.GetString() 

     if textEntered: 
      matching = [s for s in self.choices if textEntered in s] 
      self.st.Set(matching) 
      self.ignoreEvtText = True 
      self.st.setValue(textEntered) 
     else: 
      self.st.Set(self.choices)   

    def derivedRelatives(self, relative): 
     return [relative, 'step' + relative, relative + '-in-law'] 

class MyApp(wx.App): 
    def OnInit(self): 
     frame = MyFrame(None, -1, '20_combobox.py') 
     frame.Show() 
     self.SetTopWindow(frame) 
     return 1 

if __name__ == "__main__": 
    app = MyApp(0) 
    app.MainLoop() 

Пожалуйста, кто-нибудь предложить мне, что не так с кодом?

ответ

0

Ваша проблема опечатка.
Использование SetValue(), SetSelection(), SetString(), SetStringSelection()
Ваш код использует setValue() вместо SetValue()

+0

Благодаря Rolf..It работал нормально .. – Ganesh