2010-10-28 45 views
0

最近我一直有一個問題,下面顯示的代碼,它一直在困擾着我一段時間。我不知道爲什麼會發生這種情況,我唯一知道的是python代碼在記錄上提出了一個段錯誤,gdb提出了關於內存的一些問題。我做錯了什麼或者這是一個錯誤?我真的想讓這個工作,所以如果你能幫助,我會非常感激。wxPython和StaticBox(Sizer)問題

C++代碼:

static int win_width = 364; 
static int win_height = 478; 

netlist = new wxDialog(NULL, wxID_ANY, "Network List", wxDefaultPosition, wxSize(win_width-8, win_height-8), wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER); 

wxBoxSizer *hszr = new wxBoxSizer(wxHORIZONTAL), 
    *vszr = new wxBoxSizer(wxVERTICAL), *vszr2 = new wxBoxSizer(wxVERTICAL); 

wxStaticBoxSizer* sszr = new wxStaticBoxSizer(wxVERTICAL, netlist, "User Information"); 
wxFlexGridSizer* fgszr = new wxFlexGridSizer(2); 

fgszr->Add(new wxStaticText(sszr->GetStaticBox(), wxID_ANY, "Nick Name: ")); 

Python代碼:

win_width = 364 
win_height = 478 

netlist = wx.Dialog(None, wx.ID_ANY, "Network List", wx.DefaultPosition, wx.Size(win_width-8, win_height-8), wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) 

hszr = wx.BoxSizer(wx.HORIZONTAL) 
vszr = wx.BoxSizer(wx.VERTICAL) 
vszr2 = wx.BoxSizer(wx.VERTICAL) 

sszr = wx.StaticBoxSizer(wx.StaticBox(netlist, wx.ID_ANY, "User Information"), orient=wx.VERTICAL) 
fgszr = wx.FlexGridSizer(2) 

fgszr.Add(wx.StaticText(sszr.GetStaticBox(), wx.ID_ANY, "Nick Name: ")) # Segmentation Fault 

回答

0

在Python端,所述Add方法具有以下參數:

Add(self, item, int proportion=0, int flag=0, int border=0, userData=None) 

proportion不是ID(但是由於它們都是整數,所以默默傳遞)和flag不是一個字符串。

相比於C++版本工作線路是:

fgszr.Add(wx.StaticText(sszr.GetStaticBox(), wx.ID_ANY, "Nick Name: ")) 

UPDATE:

下面的代碼成功地使用的wxPython 2.9.1.1

import wx 

app = wx.PySimpleApp() 

win_width = 364 
win_height = 478 

netlist = wx.Dialog(None, wx.ID_ANY, "Network List", wx.DefaultPosition, wx.Size(win_width-8, win_height-8), wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) 

hszr = wx.BoxSizer(wx.HORIZONTAL) 
vszr = wx.BoxSizer(wx.VERTICAL) 
vszr2 = wx.BoxSizer(wx.VERTICAL) 

sszr = wx.StaticBoxSizer(wx.StaticBox(netlist, wx.ID_ANY, "User Information"), orient=wx.VERTICAL) 
fgszr = wx.FlexGridSizer(2) 

fgszr.Add(wx.StaticText(sszr.GetStaticBox(), wx.ID_ANY, "Nick Name: ")) # Segmentation Fault 

netlist.ShowModal() 
+0

感謝窗口執行回覆!我很抱歉,你上面提到的是原來的代碼的一部分,是什麼給了段錯誤。代碼已更新,但問題仍然存在。 – dbdii407 2010-10-28 12:42:51

+0

我在回覆之前測試了代碼,工作得很好。我在Windows上使用wxPython 2.9.1.1。嘗試使用wxFormBuilder來設計您的表單並查看它生成的代碼是否有效。 – 2010-10-28 13:03:55

+0

我會嘗試,看起來像一個很好的應用程序!可悲的是,我將無法再開始4.5個小時。在那之前,是否可以發佈你用來測試的文件?你提到你在使用Windows,而我在Arch Linux上。不知道這是否意味着任何不同。 – dbdii407 2010-10-28 15:23:19