为什么wxPanel上的控件挤做一团?

jiangwen365 2004-12-03 02:02:29
import wx

class AuditFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "TJBY Auditor",pos=(150, 150), size=(500, 200))

self.Panel = wx.Panel(self,-1,(0,0),(500,200),style=wx.SUNKEN_BORDER)
self.PanelSizer = wx.GridBagSizer(wx.VERTICAL)

self.btnSelect = wx.Button(self.Panel,-1,"Select Invoices")#filebrowse.FileBrowseButton(self.Panel, -1, (25, 0), (450, -1), changeCallback = self.fbbCallback)
self.PanelSizer.Add(self.btnSelect,(0,0))

self.txtOpenPath = wx.StaticText(self.Panel,-1)
self.PanelSizer.Add(self.txtOpenPath,(0,1))


self.btnCheck = wx.Button(self.Panel,-1,"Start Checking",(0,0))
self.btnCheck.Disable()
self.PanelSizer.Add(self.btnCheck,(1,1))

self.TxtCtl = wx.TextCtrl(self.Panel,-1)
self.PanelSizer.Add(self.TxtCtl,(2,0),(2,2))
self.Panel.SetSizer(self.PanelSizer)



app = wx.App(False)
MainFrame = AuditFrame()
MainFrame.Show()
app.MainLoop()

运行时,Panel只占据Frame空间的一小块,所有的控件挤在一块,而Frame上却留下大片没利用的空间.
如何让这些控件舒展开来?
谢谢
...全文
244 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
limodou 2004-12-05
  • 打赏
  • 举报
回复
我平常都用boxsizer来控制布局。实在不行我就使用xrced来生成xml的资源文件,进行精确定位。至今没出现过什么布局上的问题。
jiangwen365 2004-12-04
  • 打赏
  • 举报
回复
可我的也是2.5.3.1呀
难道你的控件均匀地排在Frame上的吗?
我这里控件都聚在Frame的左上角那一块,感觉Sizer没法占据整个Frame
limodou 2004-12-04
  • 打赏
  • 举报
回复
在我的运行环境下,wxPython 2.5.3.1下没有问题。换个wxPython版本试一试。
jiangwen365 2004-12-04
  • 打赏
  • 举报
回复
不行.
难道wxPanel上排个布局就这么难吗?
jiangwen365 2004-12-04
  • 打赏
  • 举报
回复
现在调好了,但原因也还是没有找到,我是擦掉然后换用BoxSizer完全重写了一遍程序.
modou兄说我前面的代码在他那里运行完全正常,可是在我这里却无论如何也调不出正常的排版.
这是否说明wxPython还未达到一个非常成熟的阶段?
不过不管怎样,wxPython/wxWidgets确实是很伟大的.

limodou 2004-12-04
  • 打赏
  • 举报
回复
我的是均匀排列的。运行的就是你的代码。换台机器试一试吧。
lejins 2004-12-03
  • 打赏
  • 举报
回复
参考 wxGridBagSizer::SetItemPosition
jiangwen365 2004-12-03
  • 打赏
  • 举报
回复
可能是我没说清楚,我是说所有的控件都紧紧地挤在Frame的左上角,而Frame的其它地方都空着.
试运行一下我的代码就知道了.
jiangwen365 2004-12-03
  • 打赏
  • 举报
回复
不行的,这两个参数是指定行与行,列与列之间距离的.
lejins 2004-12-03
  • 打赏
  • 举报
回复
self.PanelSizer = wx.GridBagSizer(3,3)
lejins 2004-12-03
  • 打赏
  • 举报
回复
wxGridBagSizer::wxGridBagSizer
wxGridBagSizer(int vgap = 0, int hgap = 0)

Constructor, with optional parameters to specify the gap between the rows and columns.

jiangwen365 2004-12-03
  • 打赏
  • 举报
回复
简化了一些,大家看这个吧,还是挤在一块儿:
import wx

class AuditFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "TJBY Auditor",pos=(150, 150), size=(500, 200))

self.Panel = wx.Panel(self,-1,(0,0),(500,200),style=wx.SUNKEN_BORDER)
self.PanelSizer = wx.GridBagSizer()

self.btnSelect = wx.Button(self.Panel,-1,"Select Invoices")
self.PanelSizer.Add(self.btnSelect,(0,0))

self.txtOpenPath = wx.StaticText(self.Panel,-1)
self.PanelSizer.Add(self.txtOpenPath,(0,1))


self.btnCheck = wx.Button(self.Panel,-1,"Start Checking",(0,0))
self.btnCheck.Disable()
self.PanelSizer.Add(self.btnCheck,(1,1))

self.TxtCtl = wx.TextCtrl(self.Panel,-1)
self.PanelSizer.Add(self.TxtCtl,(2,0),(2,2)) #How to enlarge the TextCtrl?
self.Panel.SetSizer(self.PanelSizer)


app = wx.App(False)
MainFrame = AuditFrame()
MainFrame.Show()
app.MainLoop()

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧