在我尝试添加事件的带有两个sizer的wxgrid中,收到此错误-TypeError:be1()接受1个位置参数,但给出了2个-
import wx
import wx.grid
from wx.lib.scrolledpanel import ScrolledPanel
class TestPanel(ScrolledPanel):
def __init__(self, parent):
ScrolledPanel.__init__(self, parent, wx.ID_ANY, size=(640, 480))
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self._create_table(), 1, wx.EXPAND | wx.ALL, 5)
vbox1 = wx.FlexGridSizer ( rows = 1 , cols = 3 , hgap = 5 , vgap = 5 ) #rows = 3 , cols = 1
self.b1 = wx.Button(self, -1, "Button 1")
self.b2 = wx.Button(self, -1, "Button 2")
self.b3 = wx.Button(self, -1, "Button 3")
button_sizer = wx.BoxSizer(wx.VERTICAL) # HORIZONTAL
button_sizer.Add(self.b1)
button_sizer.Add(self.b2)
button_sizer.Add(self.b3)
vbox1.Add ( button_sizer )
vbox1.Add ( self.sizer )
midPan1 = wx.Panel ( self )
midPan1.SetBackgroundColour ( '#ededed' )
vbox1.Add ( midPan1 , wx.ID_ANY , wx.EXPAND | wx.ALL , 20 )
self.SetSizer ( vbox1 )
self.SetupScrolling()
self.SetAutoLayout(1)
self.b1.Bind ( wx.EVT_BUTTON , self.be1 )
def be1 (self) :
print ( "7654321" )
def _create_table(self):
_table = wx.grid.Grid(self, -1)
_table.CreateGrid(0, 10)
for i in range(30): # Work normally If I use 1722 rows
_table.AppendRows()
_table.SetCellValue(i, 0, str(i))
return _table
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY,
title="Scroll table", size=(640, 480))
self.fSizer = wx.BoxSizer(wx.VERTICAL)
self.fSizer.Add(TestPanel(self), 1, wx.EXPAND)
self.SetSizer(self.fSizer)
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = TestFrame()
app.MainLoop()
如何添加事件。由于stackoverflow的要求,我在代码下写了额外的内容-看来您的帖子大部分是代码;请添加更多详细信息。
[当我尝试添加事件时在具有两个sizer的wxgrid中,收到此错误-TypeError:be1()接受1个位置参数,但给出了2个参数-从wx.lib.scrolledpanel import导入wx import wx.grid ...
作为documentation状态,“将[...绑定到按钮...的处理程序将收到wx.CommandEvent参数”。因此,您需要更改be1
以同时接受self
和event
参数,例如: