背景 作为python和GUI编程的新手,我想创建一个基于wxpython的GUI应用程序。这个图形用户界面将运行一系列的测试,用文本文件编写的测试将要运行,它的步骤应该显示在窗口中。要选择特定的测试,请单击该特定测试的复选框(下图中的CheckListCtrl)。测试结果将显示在MulilineTextCtrl\u 2Log中
窗口应该是这样的:
我的ASCII艺术不是很好,但无论如何
|-------------------------------------------------------------|
|WINDOW TITLExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_[]X|
|xxx[SelectAll]xxxxxx[DeselectAll]xxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|[CheckListCtrl] [MultilineTexTCtrl_1]xxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[Refresh]xxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx[Execute]xxx|
|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|xxxxxxx[MulilineTextCtrl_2Log]xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
|_____________________________________________________________|
我在为这个窗口创建boxsizer时遇到了问题。我很难想象面板的创建
你不需要那些额外的面板。事实上,除了wx.笔记本诸如此类。取而代之的是,我发现最简单的方法就是在一张纸上画出草图,然后在周围画出矩形。为此,我需要一个垂直方向的主BoxSizer。然后我将使用两个水平的boxsizer作为按钮和next to控件。如果您必须这样定位其他三个单独的小部件,那么您可能需要其他一些带有空格的boxsizer。不管怎样,一旦你在各种boxsizer中有了小部件,你就把它们添加到MainSizer中,就完成了。在
或者你可以使用一个网格大小调整器,在最后三个空格中加上几个空格。在
我建议您使用wxglade来设计gui。它是快速和有效的,在你有一些经验后,你可以做你可以手动做的大部分事情。在
wxglade没有wx.lib文件小部件,如您正在使用的
CheckListCtrlMixin
或ListCtrlAutoWidthMixin
,或组合,如您的类CheckListCtrl
。在为了能够使用这些工具,可以用一个可用的小部件(p.e.awx.面板)然后,在生成代码之后,手动替换wx.面板使用特殊类或自定义类的实例化。在
最后,您的代码有一些产生异常的主要问题,例如wx.框架(用于wx.框架),错误的缩进或未定义的测试列表。MainGUI类没有}。在
__init__
方法,也没有初始化父类wx.Frame
。另外,bottomPanel
被添加到hbox
大小器中,而不是{您编写的组织不会生成您所描述的GUI结构,而是生成两个面板(包含多个小部件)的GUI结构:
为了更接近您的描述,您至少需要添加两个额外的sizer。 使用wxglade,它会为你做一切。在
这里有wxglade为类似于您的设计生成的代码(用您的
CheckListCtrl
替换wx.ListCtrl
:以及外观:
请注意,正如在另一个答案中所说的,没有必要将小部件放入面板(
widget(panel,..)
)中,面板也不需要放在尺寸器中。它可以工作,但最好是将小部件(作为frame->;widget(self,..)
)放入sizer(sizerx.Add(widget,..)
)中,将sizer放入sizers(sizery.Add(sizerx)
)中来构建结构。通常不修改此代码。相反,您可以将其子类化以添加您的功能或任何您需要的花哨的添加。通过这种方式,您可以始终再次使用wxglade来更改小部件的位置,或者添加其他小部件或大小调整器并重新生成整个文件。在
相关问题 更多 >
编程相关推荐