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


我想用wxpython这个界面库开发一个简单的数据库管理系统。火车票售票管理系统。但是查询的结果需要返回到一个表格中。使用Grid或者ListCtrl,或者PyGridTable也行。但是怎么和一个按钮控件共存在一个界面上呢。按钮是要存在一个panel上的,只要使用了表格。把按钮添加到panel中,在往框架中加panel就显示不出来。。
真心求教!!!
-----------------------------
Double行动:
原帖分数:20
加分:20

9 个解决方案

#1


是这样的层次吗,Frame -> Panel -> listctrl、button 不会显示不出来吧,除非被覆盖了

#2


是这样的层次吗,Frame -> Panel -> listctrl、button 不会显示不出来吧,除非被覆盖了

#3


引用 2 楼 thundor 的回复:
是这样的层次吗,Frame -> Panel -> listctrl、button 不会显示不出来吧,除非被覆盖了

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类没法加入啊

#4


panel要独占父窗口的吧,你grid那行摆到后面,用panel当父窗口...

panel=wx.Panel(self,-1)
grid = SimpleGrid(panel)

#5


引用 4 楼 angel_su 的回复:
panel要独占父窗口的吧,你grid那行摆到后面,用panel当父窗口...

panel=wx.Panel(self,-1)
grid = SimpleGrid(panel)

按您说的,按钮可以显示出来了,
可是那个表格仍然无法正确的显示

#6


最好用点简单代码描述你的问题,不然好像猜谜一样...

#7


引用 6 楼 angel_su 的回复:
最好用点简单代码描述你的问题,不然好像猜谜一样...

我就拿个代码简单的试一下,你运行看看怎么解决

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

#8


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)

#9


引用 8 楼 angel_su 的回复:
grid没有展开,那就自己定义大小吧,类似:
wx.grid.Grid.__init__(self, parent, size=(500, 500)

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

Python code
class TestFrame(wx.Frame):
    def __init__(self, par……

谢谢你,太好了。我初学,不知道原来sizer布局这么重要。
帮了我大忙了。wxPython的路还有很长
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告