2012-03-22 46 views
2

我花了最后一小时试图查看我做错了什么,或者忽略了什么。我试图根据用户选择的文件的文件扩展名填充组合框。以下是我的代码的关键部分。感谢您的帮助:创建列表以填充组合框时出错

... 
unit1 = 'myfile.avi' 
... 
... 

if self.format_combo1 != 'Select Media' or self.format_combo1 != '': 
     myFormat = self.format_combo1.GetValue 

formats2 =['.avi','.mpeg','.mp4','.flv','.mov','.mpeg4','.mpg','.mp3','.ogg','.wav','.wma'] 
    FormTypes = [self.formatType(myFormat, formats2)]# Function call here 
    self.format_combo2=wx.ComboBox(panel, size=(100, -1),value='Select Format', choices=FormTypes, style=wx.CB_DROPDOWN, pos=(300,81)) 

... 
... 

def formatType(self, unit1, formats2): 
    auDio = ['.wav','.wma','.mp3','.ogg'] 
    viDeo = ['.avi','.mpeg','.mp4','.flv','.mov','.mpeg4','.mpg'] 
    bad_format = ['Invalid Format'] 
    fileExtension = os.path.splitext(unit1)[1] 
    if fileExtension in formats2: 
     if fileExtension in auDio: 
      return auDio 
     elif fileExtension in viDeo: 
      return viDeo 
    else: 

     return bad_format 

下面是我得到的回溯消息:您要指定myFormat一个函数对象这里

Traceback (most recent call last): 
    File "C:\Users\GVRSQA004\Desktop\D_Converter\med_convrt.py", line 499, in <module> 
    frame = dConvert() 
    File "C:\Users\GVRSQA004\Desktop\D_Converter\med_convrt.py", line 112, in __init__ 
    self.format_combo2=wx.ComboBox(panel, size=(100, -1),value='Select Format',   choices=FormTypes, style=wx.CB_DROPDOWN, pos=(300,81)) 
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line 590, in __init__ 
_controls_.ComboBox_swiginit(self,_controls_.new_ComboBox(*args, **kwargs)) 
TypeError: String or Unicode type required 
+1

'myFormat'的类型是什么(检查'type(myFormat)')?它似乎是一个函数而不是一个字符串。 – 2012-03-22 19:20:29

回答

3
myFormat = self.format_combo1.GetValue 

(可能是你的意思GetValue())。然后,你打电话formatTypemyFormat作为第一个参数,它应该是一个字符串。