Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ wxPython和StaticBox(Sizer)问题_C++_Python_Wxpython_Wxwidgets - Fatal编程技术网

C++ wxPython和StaticBox(Sizer)问题

C++ wxPython和StaticBox(Sizer)问题,c++,python,wxpython,wxwidgets,C++,Python,Wxpython,Wxwidgets,最近,我对下面显示的代码有一个问题,它已经困扰了我一段时间了。我不知道为什么会发生这种情况,我唯一知道的是python代码在注释的行上显示了一个segfault,而gdb显示了一些关于内存的信息。我是做错了什么还是这是一个错误?我真的很想让它工作,所以如果你能帮助我,我将不胜感激 C++代码: static int win_width = 364; static int win_height = 478; netlist = new wxDialog(NULL, wxID_ANY, "Netw

最近,我对下面显示的代码有一个问题,它已经困扰了我一段时间了。我不知道为什么会发生这种情况,我唯一知道的是python代码在注释的行上显示了一个segfault,而gdb显示了一些关于内存的信息。我是做错了什么还是这是一个错误?我真的很想让它工作,所以如果你能帮助我,我将不胜感激

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

在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: "))
更新:

以下代码使用wxPython 2.9.1.1在windows上成功执行

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()

谢谢回复!很抱歉,您上面提到的内容最初是代码的一部分,并且是导致SEGFULT的原因。代码已经更新了,但是问题仍然存在。我在回复之前测试了代码,效果很好。我在windows上使用wxPython 2.9.1.1。试着用wxFormBuilder来设计你的表单,看看它生成的代码是否有效。我会试试的,看起来是个不错的应用程序!遗憾的是,我还要4.5个小时才能出发。在此之前,是否可以发布用于测试的文件?你提到你在使用windows,而我在使用Arch Linux。不知道这是否意味着任何不同。不同之处在于底层gui库。虽然您可能偶然发现了一些wxGTK错误,但这是不可能的,您在这里介绍的用例太常见了。遗憾的是,它仍然存在错误,我无法安装您的版本,因为python给了我一个错误。这需要一段时间。。。