[D]wxPython中表格和按钮怎么能存在一个界面上呢

milosz 2012-03-13 12:01:10
我想用wxpython这个界面库开发一个简单的数据库管理系统。火车票售票管理系统。但是查询的结果需要返回到一个表格中。使用Grid或者ListCtrl,或者PyGridTable也行。但是怎么和一个按钮控件共存在一个界面上呢。按钮是要存在一个panel上的,只要使用了表格。把按钮添加到panel中,在往框架中加panel就显示不出来。。
真心求教!!!
-----------------------------
Double行动:
原帖分数:20
加分:20
...全文
449 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel_su 2012-03-15
  • 打赏
  • 举报
回复
grid没有展开,那就自己定义大小吧,类似:
wx.grid.Grid.__init__(self, parent, size=(500, 500)

个人推荐使用sizer布局,不用定死控件大小,使用者拖拉窗口大小时,也会自动调整,试试置换下面代码:
class TestFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, None)
panel=wx.Panel(self)
button=wx.Button(panel, -1, u"确定")
button.SetDefault()
grid = SimpleGrid(panel)

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(grid, 1, wx.EXPAND|wx.ALL, 5)
sizer.Add(button, 0, wx.ALIGN_CENTER|wx.BOTTOM, 5)
panel.SetSizer(sizer)
milosz 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 angel_su 的回复:]
grid没有展开,那就自己定义大小吧,类似:
wx.grid.Grid.__init__(self, parent, size=(500, 500)

个人推荐使用sizer布局,不用定死控件大小,使用者拖拉窗口大小时,也会自动调整,试试置换下面代码:

Python code
class TestFrame(wx.Frame):
def __init__(self, par……
[/Quote]
谢谢你,太好了。我初学,不知道原来sizer布局这么重要。
帮了我大忙了。wxPython的路还有很长
milosz 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 angel_su 的回复:]
最好用点简单代码描述你的问题,不然好像猜谜一样...
[/Quote]
我就拿个代码简单的试一下,你运行看看怎么解决

import wx
import wx.grid

class SimpleGrid(wx.grid.Grid):
def __init__(self, parent):
wx.grid.Grid.__init__(self, parent, -1)
self.CreateGrid(9, 2)
self.SetColLabelValue(0, "First")
self.SetColLabelValue(1, "Last")
self.SetRowLabelValue(0, "CF")
self.SetCellValue(0, 0, "Bob")
self.SetCellValue(0, 1, "Dernier")
self.SetRowLabelValue(1, "2B")
self.SetCellValue(1, 0, "Ryne")
self.SetCellValue(1, 1, "Sandberg")
self.SetRowLabelValue(2, "LF")
self.SetCellValue(2, 0, "Gary")
self.SetCellValue(2, 1, "Matthews")
self.SetRowLabelValue(3, "1B")
self.SetCellValue(3, 0, "Leon")
self.SetCellValue(3, 1, "Durham")
self.SetRowLabelValue(4, "RF")
self.SetCellValue(4, 0, "Keith")
self.SetCellValue(4, 1, "Moreland")
self.SetRowLabelValue(5, "3B")
self.SetCellValue(5, 0, "Ron")
self.SetCellValue(5, 1, "Cey")
self.SetRowLabelValue(6, "C")
self.SetCellValue(6, 0, "Jody")
self.SetCellValue(6, 1, "Davis")
self.SetRowLabelValue(7, "SS")
self.SetCellValue(7, 0, "Larry")
self.SetCellValue(7, 1, "Bowa")
self.SetRowLabelValue(8, "P")
self.SetCellValue(8, 0, "Rick")
self.SetCellValue(8, 1, "Sutcliffe")

class TestFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, None,1, "A Grid",
size=(600, 600))



panel=wx.Panel(self,-1)
self.button=wx.Button(panel,-1,"确定",pos=(500,500))
self.button.SetDefault()
grid = SimpleGrid(panel)

if __name__ == '__main__':
app = wx.App()
frame = TestFrame(None)
frame.Show(True)
app.MainLoop()
angel_su 2012-03-13
  • 打赏
  • 举报
回复
panel要独占父窗口的吧,你grid那行摆到后面,用panel当父窗口...

panel=wx.Panel(self,-1)
grid = SimpleGrid(panel)
milosz 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 thundor 的回复:]
是这样的层次吗,Frame -> Panel -> listctrl、button 不会显示不出来吧,除非被覆盖了
[/Quote]
listCtrl怎么加入到panel中啊

grid = SimpleGrid(self)

panel=wx.Panel(self,-1)
self.button=wx.Button(panel,-1,"确定",pos=(500,500))
self.button.SetDefault()

这个button是继承wx库中的Button类,可以用构造函数加入。
而我自己定义的SimpleGrid类没法加入啊
zengna_com 2012-03-13
  • 打赏
  • 举报
回复
是这样的层次吗,Frame -> Panel -> listctrl、button 不会显示不出来吧,除非被覆盖了
zengna_com 2012-03-13
  • 打赏
  • 举报
回复
是这样的层次吗,Frame -> Panel -> listctrl、button 不会显示不出来吧,除非被覆盖了
angel_su 2012-03-13
  • 打赏
  • 举报
回复
最好用点简单代码描述你的问题,不然好像猜谜一样...
milosz 2012-03-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 angel_su 的回复:]
panel要独占父窗口的吧,你grid那行摆到后面,用panel当父窗口...

panel=wx.Panel(self,-1)
grid = SimpleGrid(panel)
[/Quote]
按您说的,按钮可以显示出来了,
可是那个表格仍然无法正确的显示

37,719

社区成员

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

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