2015-10-08 90 views
0

這是我的文件:Python:恰好2個參數(1給出)?

import wx 


class MyFrame1 (wx.Frame): 

    def __init__(self, parent): 
     wx.Frame.__init__ (self, None, id = wx.ID_ANY, title = u"FB Converter to Python", pos = wx.DefaultPosition, size = wx.Size(450,300), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL) 

     self.SetSizeHintsSz(wx.DefaultSize, wx.DefaultSize) 

     bSizer1 = wx.BoxSizer(wx.VERTICAL) 

     self.infoCtrl1 = wx.InfoBar(self) 
     self.infoCtrl1.SetShowHideEffects(wx.SHOW_EFFECT_SLIDE_TO_RIGHT, wx.SHOW_EFFECT_SLIDE_TO_LEFT) 
     self.infoCtrl1.SetEffectDuration(500) 
     bSizer1.Add(self.infoCtrl1, 0, wx.EXPAND, 5) 

     gSizer1 = wx.GridSizer(0, 3, 2, 2) 

     self.staticText1 = wx.StaticText(self, wx.ID_ANY, u"Prodject Folder", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.staticText1.Wrap(-1) 
     gSizer1.Add(self.staticText1, 0, wx.ALL, 5) 

     self.dirPicker2 = wx.DirPickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a folder", wx.DefaultPosition, wx.DefaultSize, wx.DIRP_DEFAULT_STYLE) 
     gSizer1.Add(self.dirPicker2, 0, wx.ALL, 5) 


     gSizer1.AddSpacer((0, 0), 1, wx.EXPAND, 5) 

     self.staticText3 = wx.StaticText(self, wx.ID_ANY, u"Convention Input Folder", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.staticText3.Wrap(-1) 
     gSizer1.Add(self.staticText3, 0, wx.ALL, 5) 

     self.dirPicker3 = wx.DirPickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a folder", wx.DefaultPosition, wx.DefaultSize, wx.DIRP_DEFAULT_STYLE) 
     gSizer1.Add(self.dirPicker3, 0, wx.ALL, 5) 


     gSizer1.AddSpacer((0, 0), 1, wx.EXPAND, 5) 

     self.staticText4 = wx.StaticText(self, wx.ID_ANY, u"Convention Output Folder", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.staticText4.Wrap(-1) 
     gSizer1.Add(self.staticText4, 0, wx.ALL, 5) 

     self.dirPicker4 = wx.DirPickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a folder", wx.DefaultPosition, wx.DefaultSize, wx.DIRP_DEFAULT_STYLE) 
     gSizer1.Add(self.dirPicker4, 0, wx.ALL, 5) 


     gSizer1.AddSpacer((0, 0), 1, wx.EXPAND, 5) 

     self.staticText5 = wx.StaticText(self, wx.ID_ANY, u"File Name To Be Converted", wx.DefaultPosition, wx.DefaultSize, 0) 
     self.staticText5.Wrap(-1) 
     gSizer1.Add(self.staticText5, 0, wx.ALL, 5) 

     self.filePicker1 = wx.FilePickerCtrl(self, wx.ID_ANY, wx.EmptyString, u"Select a file", u"Python files (*.py)|*.py", wx.DefaultPosition, wx.DefaultSize, wx.FLP_DEFAULT_STYLE|wx.FLP_FILE_MUST_EXIST) 
     gSizer1.Add(self.filePicker1, 0, wx.ALL, 5) 


     gSizer1.AddSpacer((0, 0), 1, wx.EXPAND, 5) 


     bSizer1.Add(gSizer1, 1, wx.EXPAND, 5) 

     bSizer3 = wx.BoxSizer(wx.VERTICAL) 

     sdbSizer1 = wx.StdDialogButtonSizer() 
     self.sdbSizer1Apply = wx.Button(self, wx.ID_APPLY) 
     sdbSizer1.AddButton(self.sdbSizer1Apply) 
     self.sdbSizer1Cancel = wx.Button(self, wx.ID_CANCEL) 
     sdbSizer1.AddButton(self.sdbSizer1Cancel) 
     sdbSizer1.Realize(); 

     bSizer3.Add(sdbSizer1, 1, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 5) 


     bSizer1.Add(bSizer3, 1, wx.EXPAND, 5) 


     self.SetSizer(bSizer1) 
     self.Layout() 

     self.Centre(wx.BOTH) 

    def __del__(self): 
      # ------------ Add widget program settings 

      # ------------ Call Populates 

      self.Show() 

      # ------------ Event handlers  

if __name__ == "__main__": 
     app = wx.App(False) 
     frame = MyFrame1() 
     app.MainLoop() 

,當我運行它,我得到這個錯誤:

Exception AttributeError: "MyFrame1 instance has no attribute 'Show'" in del of <main.MyFrame1 instance at 0x000000000315C788>> ignored

Traceback (most recent call last): File "C:\myProjects\Python2\output\fbconvertBK.py", line 96, in frame = MyFrame1() TypeError: init() takes exactly 2 arguments (1 given)

的錯誤是在這裏:

frame = MyFrame1() 

和類第一線:

class MyFrame1 (wx.Frame): 

有人能讓我知道我要去哪裏嗎?

+1

錯誤是不言自明的。您沒有將足夠的參數傳遞給'MyFrame1()'。 – DJMcMayhem

回答

3

MyFrame1()類需要一個parent說法,但你沒有提供它。該__init__法規定的參數:

def __init__(self, parent): 

,但你沒有通過它:

if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyFrame1() 

也許你的意思是在app爲母體通過?

if __name__ == "__main__": 
    app = wx.App(False) 
    frame = MyFrame1(app) 

另外,通過給它的默認值使父參數可選

def __init__(self, parent=None): 

__init__實現,否則不使用參數,所以你甚至可以只是省略在這裏:

def __init__(self): 
+0

感謝您使用「parent = none」工作。但現在我遇到了一個問題,但我無法在任何地方看到它。任何人都可以幫忙嗎? –

+1

@ Simon5968:我認爲*你需要做的就是調用'frame.Show()'。 –

+0

@ Martijn彼得斯:調用「frame.Show()」工作。 –

0

MyFrame1類需要一個自變量:

class MyFrame1 (wx.Frame): 
    def __init__(self, parent): 
     pass 

所以,你有frame = MyFrame1(parent)初始化它,而不是frame = MyFrame1()
如果MyFrame1並不總是需要父框架,那麼您可以使用可選參數。

class MyFrame1 (wx.Frame): 
    def __init__(self, parent=None): 
     pass 

如蟒蛇忍者的Martijn皮特斯指出,你當然就必須拆除,因爲你__init__實現不依賴於parent說法。

def __init__(self): 
相關問題