标签: wxwidgets

将Excel数据加载到Linux/wxWidgets C++应用程序中?

我正在使用wxWidgets来编写跨应用程序.在其中一个应用程序中,我需要能够从Microsoft Excel(.xls)文件加载数据,但我也需要在Linux上工作,所以我假设我不能使用OLE或Windows上的任何技术.

我看到有很多开源程序可以读取excel文件(OpenOffice,KOffice等),所以我想知道是否有一些我可以使用的库?

它需要支持的Excel文件是非常简单的直表格数据.除了列/行位置和数据本身之外,我不需要提取任何格式.

c++ excel wxwidgets

5
推荐指数
1
解决办法
2485
查看次数

是否有类似Visual Studio的工具为Python创建GUI?

我的女朋友问我是否有一个工具(实际上是一个IDE)可以让她直观地创建她的GUI,并且可以轻松地编辑与GUI相关的事件相关的功能.

例如,她想要双击她刚刚创建的按钮,并立即查看(和编辑)与该按钮的点击事件相关联的代码.我相信这就是她在Visual Studio中所做的.

该工具包无关紧要.她只想要这个功能.

是否有一些工具可以实现这一目标?

谢谢.

编辑:使示例看起来大胆.似乎没有人在看它,这是一个重要的要求.

python gtk qt wxwidgets visual-studio

5
推荐指数
2
解决办法
2万
查看次数

从wxWidget转移到QT的推荐指南

我有一个使用wxwidget工具包的项目(wxThread,wxString,wxEvent,wxDateTime,wxLog等).我正在转向QT.

我对这个任务感到有些畏惧,并且最好到这里来问那些可能以前进行过此类操作的人.

我是:

  1. 采取更加谨慎的方法(一次替换一个类 - 这可能不像听起来那么直接,因为类之间存在一些依赖关系)

  2. 只需首先潜入头部然后撕掉内脏并一次性重构一切(嗯,听起来很痛苦......)

migration qt wxwidgets

5
推荐指数
1
解决办法
811
查看次数

如何确保将wxFrame带到前台?

我有一个wxFrame接收事件.每当一个事件进来时,我希望将帧带到前台.

我目前正在使用:

my_frame->SetFocus();
Run Code Online (Sandbox Code Playgroud)

但这似乎不适用于最小化的帧.如何将框架设置为活动窗口并将其置于前面?

或者,是否有一种闪烁标题的方法?

wxwidgets focus set

5
推荐指数
1
解决办法
3650
查看次数

gui应用的面向对象设计问题

伙计们,我正在编写一个应用程序的GUI,一个插入cd的cd容器,目前我不是很清楚,我想我需要一些帮助来澄清我对面向对象设计的理解.

所以,首先,我使用观察者模式来构建抽象的Model和View类,以及具体模型(cd容器)和具体视图(cd容器视图).然后我开始使用wxwidget框架设计和图形外观或布局(CDContainerWidget,来自wxPanel)为cd容器和其他gui控件MainFrame(来自wxFrame)等.

所以现在我有三个类:CDContainerModel(cd容器),CDContainerView(观察者模式的类)和CDContainerWidget(gui控件).然后我不清楚我应该怎么做CDContainerViewCDContainerWidget

我认为CDContainerWidget和CDContainerView都需要CDContainerModel.我想了四种方法,但不知道哪一种是合适的:

1).将CDContainerWidget作为成员变量关联到CDContainerView中,然后将CDContainerView作为成员变量放入主框架中.

class CDContainerView:
  def __init__:
     self.gui=CDContainerWidget

class MainFrame:
  def __init__:
     CDContainerView
Run Code Online (Sandbox Code Playgroud)

2).CDContainerView子类CDContainerWidget:

class CDContainerView(CDContainerWidget):

class MainFrame:

   def __init__:

     CDContainerView
Run Code Online (Sandbox Code Playgroud)

3).CDContainerWidget子类CDContainerView:

class CDContainerWidget(CDContainerView):

class MainFrame:
  def __init__:
     CDContainerWidget
Run Code Online (Sandbox Code Playgroud)

4).而不是使用CDContainerWidget和CDContainerView,只使用单个类CDContainerBig,它是抽象类View和wxPanel的子类

class CDContainerBig(View, wxPanel)
Run Code Online (Sandbox Code Playgroud)

我的问题是什么是正确的解决方案?我已经阅读了MVC模式的维基页面,但我并不真正理解它的描述,也不知道如何并且也不知道将它应用于我的问题是否合适.

好吧,我补充一些评论.最初,当我开始设计编程时,我没有多想,只是选择,2)方法.但现在,我认为3)是好的.因为将widget放在widget中是合理的(CDContainerWidget放入MainFrame).但我不太确定.此外,它似乎与观察者模式,三个类扭曲和awkard.有时,在我看来,这4个可能是相同的,只包括谁或谁向谁发送信息.好吧,我想我真的需要澄清这一点.

另外,我赞成3)因为实用点.CDContainerWidget实际上包含几个子窗口小部件组件(按钮,输入框等),如果我们通过子组件小部件改变设置新值,那么对于1),我们需要CDContainerWidget来了解CDContainerView,让CDContainerView通知其他视图.2)更糟糕的是,CDContainerWidget必须知道它的儿童CDContainerView.3)CDContainerWidget本身就是CDContainerView,所以非常合理.4)好,容易,但没有逻辑分离.这是我自己的想法,不知道是不是正确的.

谢谢!!

python oop user-interface wxwidgets design-patterns

5
推荐指数
1
解决办法
745
查看次数

使用动态内容刷新wxGrid

这似乎并不像我希望的那么简单:

使用wxWidgets(2.8稳定系列),我有一个wxGrid(不是子类),自定义"数据适配器"作为wxGridTableBase派生类.

wxGrid* grid = new wxGrid (this, ID_TABLE);
grid->SetTable (new TableAdapter (foo, bar, baz));
grid->EnableEditing (false);
sizer->Add(grid, wxSizerFlags (1).Expand());
Run Code Online (Sandbox Code Playgroud)

我找不到的"简单"的东西是在底层数据模型发生变化时刷新网格的一种方法.简单地调用wxWindow :: Update(pGrid->Update())显然不足以让网格调用底层的wxGridTableBase实现?

wxGrid* const grid = (wxGrid* const) FindWindow (ID_TABLE);
if (NULL != grid) {
     grid->Update ();
     grid->AutoSizeColumns ();
}
Run Code Online (Sandbox Code Playgroud)

特别是,此网格充当列表,并且将通过相同或(可能)另一个进程异步添加和删除行 - 它是可由多个联网系统中的任何一个更新的共享数据列表.网格/列表本身实际上是只读的; 其他控件用于添加和删除项,每行都有一个布尔类型属性,也可以切换.

似乎新行未添加到视图中,删除行将导致wx绘图代码中的间歇性SEGV.

由于动态/异步更新机制,我希望避免不断删除并重新添加网格到窗口,因为我确信会导致各种闪烁和肮脏......所以,我会摔倒如果我绝对必须这样做,那就回去尝试一些类似暴力的东西,但我更倾向于避免它.

不幸的是,尽管被标记为"稳定版本",但wxGrid文档似乎主要由Yet to be written标签组成.

更新: 我开始怀疑这是容器布局问题.在绘制网格时,网格的底部(最后一行)实际上可以围绕wxFrame窗口部分的wxStaticBox框架以及框架状态行的一部分重叠.添加和删​​除行似乎不会强制重新布局容器; 我正在尝试打电话Layout等.理想情况下,这应该是一个滚动区域,但wxGrid 仍应在其包含的Sizer中"约束".

布局实际上包含一个静态框,其中包含一个垂直框,第一个元素是一个水平的按钮框,然后是网格,如下所示:

    --[ Static Box ]------------------------
   |                                        |
   | [Button] [Button] [Button]             |
   |                                        |
   |  ----------------------------------- …
Run Code Online (Sandbox Code Playgroud)

c++ wxwidgets

5
推荐指数
1
解决办法
7397
查看次数

在草莓上安装wxPerl

我想在草莓上安装wxperl.我无法安装Alien :: wxWidgets.我尝试了所有我能想到的东西.通常我会收到类似这样的错误:

Creating library file: ..\..\src\stc\..\..\..\lib\gcc_dll\libwxmsw28u_stc.a
compilet.exp:fake:(.edata+0x3c): undefined reference to `boot_compilet'
compilet.exp:fake:(.edata+0x40): undefined reference to `boot_compilet'
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么.我试过wxWidgets v 2.8.12和2.9.3以及各种选项.我从cpanm开始,然后用各种选项手动唤起perl Build.PL.

我在Windows 7 64位上.我尝试使用5.14.2 32位和64位.我很确定我的路径没有其他perl安装,而不是我目前使用的.

有任何想法吗?谢谢!

installation perl wxwidgets wxperl strawberry-perl

5
推荐指数
2
解决办法
2067
查看次数

如何为小部件添加轮廓边框?

如何在wxpython中为窗口小部件添加轮廓边框?(任何小部件,例如,a wx.Button)

python wxwidgets wxpython

5
推荐指数
1
解决办法
6548
查看次数

wxWidgets和Golang

我想在wxWidgets中使用多操作系统GUI在Go中开发程序,我的开发环境是WinXP x86。

我想使用wxWidgets Go包装器wxGo,但是文档非常简洁,该项目似乎已经停滞了2年。

我在go get github.com/JeroenD/wxGo和时遇到了一些错误go install github.com/JeroenD/wxGo

结果go get github.com/JeroenD/wxGo

package github.com/JeroenD/wxGo
    imports github.com/JeroenD/wxGo
    imports github.com/JeroenD/wxGo: no Go source files in C:\Documents and Settings\dell\Mes documents\gopath\src\github.com\JeroenD\wxGo
Run Code Online (Sandbox Code Playgroud)

结果go install github.com/JeroenD/wxGo

can't load package: package github.com/JeroenD/wxGo: no Go source files in C:\Documents and Settings\dell\Mes documents\gopath\src\github.com\JeroenD\wxGo
Run Code Online (Sandbox Code Playgroud)

我试图遵循JeroenD的github中的Building.txt文档。第一次,我下载并安装了wxWidgets,示例代码能够编译(使用MinGW),但是我无法从源代码编译wxWidgets库。第二次,我下载并安装了wsPack,并且已经编译了libs / dll。在这里,问题是我无法编译wxWidgets示例。

如JeroenD的github上的Buiding.txt文档所述,我安装了SWIGWIN,但未从源代码进行编译,因为SWIG现在支持Go(来自SWIG的文档)。但是现在,我不知道如何使用包装器(wxGo),wxWidgets dll / libs和SWIG。我想我读过SWIG需要* .i文件来进行语言到另一个的绑定,但是我在wxWidgets文件夹中找不到任何文件,也许我必须从另一个wxWidgets绑定中获取这些文件(wxLua和wxPython在它们的目录中包含了这些文件。回购)。

我的目标只是让wxWidgets库与Go一起使用,以便能够在wxWidgets中编写多操作系统GUI。我感到惊讶的是,没有人发布JeroenD软件包的问题,​​也不希望让wxWidgets与Go一起使用。

您可能会问,用go-gtk构建gtk GUI并不是解决方案,因为在我的项目中需要具有看起来像OS本机的多OS GUI(如果您有看起来像Native的Multi-OS GUI库,简单易用,请告诉我)。

user-interface wxwidgets install go wxgo

5
推荐指数
1
解决办法
6230
查看次数

在wxPython中展开FoldPanelBar时不会出现滚动条

当折叠板展开时,它会越过框架并且不会出现滚动条.我尝试使用ScrolledPanel,但没有帮助.知道我在这里缺少什么吗?

import wx
from wx.lib import scrolledpanel
import wx.lib.agw.foldpanelbar as fpb
import wx.lib.scrolledpanel as sp

class MyPanel(sp.ScrolledPanel):

    def __init__(self, parent):
        sp.ScrolledPanel.__init__(self, parent=parent, size=parent.GetSize(), style = wx.ALL|wx.EXPAND)
        #self.SetAutoLayout(1)
        self.SetupScrolling()
        ##self.boxSizer = wx.BoxSizer(wx.VERTICAL)###
        csStyle = fpb.CaptionBarStyle()
        csStyle.SetFirstColour(wx.Colour(190, 190, 190, 255))
        csStyle.SetSecondColour(wx.Colour(167, 232, 146, 255))
        csStyle.SetCaptionFont(wx.Font(9, wx.DEFAULT, wx.NORMAL, wx.BOLD))

        m_pnl = fpb.FoldPanelBar(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize,
                            fpb.FPB_VERTICAL)

        item = m_pnl.AddFoldPanel("Set 1", collapsed=True, cbstyle=csStyle)

        self.listContainer = wx.ListCtrl(item, style=wx.LC_REPORT)
        self.listContainer.InsertColumn(0, 'Column1', width=250)
        self.listContainer.InsertColumn(1, 'Column2', width=150)
        self.listContainer.InsertColumn(2, 'Column3')

        m_pnl.AddFoldPanelWindow(item, self.listContainer)
        btnAutoFix = wx.Button(item, wx.ID_ANY, "Go", size=(50,-1))
        m_pnl.AddFoldPanelWindow(item, …
Run Code Online (Sandbox Code Playgroud)

python wxwidgets wxpython

5
推荐指数
1
解决办法
235
查看次数