【发布时间】:2018-09-25 20:55:49
【问题描述】:
问题:当我将 DatePicker obj 与一个函数绑定时,它在该函数中可以正常工作,但是当我尝试将相同的值附加到另一个函数中的列表时,它会执行 1 或 2 件事,错误会说
[<bound method F_Main.date_Begin of <guiwm.F_Main object at 0x08D01490>>, (15, 48, 55)]
我知道的意思是直接调用函数,所以我应该在函数调用的末尾添加一个括号“()”,但是当我添加它时,我得到以下错误
date_Begin() missing 1 required positional argument: 'event'
下面是我的一些代码以及事件绑定
self.dateBegin.Bind( wx.adv.EVT_DATE_CHANGED, self.date_Begin )
def date_Begin( self, event ):
aStringDate = self.dateBegin.GetValue().Format("%m-%d-%y")
print(aStringDate)
return aStringDate
event.Skip()
def time_Begin(self):
aStringTime = self.timeBegin.GetTime()
print(aStringTime)
return aStringTime
这是我调用另一个函数
def clickBtn_Generate( self, event ):
a = self.date_Begin()
b = self.time_Begin()
list = []
list.append(a)
list.append(b)
print(list)
return list
event.Skip()
我已经尝试删除并保留括号
a = self.date_Begin
但它们都不起作用。知道如何解决这个问题吗?
class F_Main ( wx.Frame ):
def __init__( self, parent ):
wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"Generator", pos = wx.DefaultPosition, size = wx.Size( 800,800 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
self.SetForegroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOW ) )
self.SetBackgroundColour( wx.Colour( 255, 255, 0 ) )
bSizer5 = wx.BoxSizer( wx.HORIZONTAL )
self.lbl_WS1 = wx.StaticText( self, wx.ID_ANY, u"Wafer Sort 1", wx.DefaultPosition, wx.DefaultSize, 0 )
self.lbl_WS1.Wrap( -1 )
self.lbl_WS1.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_ACTIVECAPTION ) )
bSizer5.Add( self.lbl_WS1, 0, wx.ALL, 10 )
self.dateBegin = wx.adv.DatePickerCtrl( self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize, wx.adv.DP_DROPDOWN )
bSizer5.Add( self.dateBegin, 0, wx.ALL, 5 )
self.timeBegin = wx.adv.TimePickerCtrl( self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize, wx.adv.DP_DEFAULT )
bSizer5.Add( self.timeBegin, 0, wx.ALL, 5 )
self.dateEnd = wx.adv.DatePickerCtrl( self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize, wx.adv.DP_DROPDOWN )
bSizer5.Add( self.dateEnd, 0, wx.ALL, 5 )
self.timeEnd = wx.adv.TimePickerCtrl( self, wx.ID_ANY, wx.DefaultDateTime, wx.DefaultPosition, wx.DefaultSize, wx.adv.DP_DEFAULT )
bSizer5.Add( self.timeEnd, 0, wx.ALL, 5 )
self.btnGenerate = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer5.Add( self.btnGenerate, 0, wx.ALL, 5 )
self.SetSizer( bSizer5 )
self.Layout()
self.Centre( wx.BOTH )
# Connect Events
self.dateBegin.Bind( wx.adv.EVT_DATE_CHANGED, self.date_Begin )
#self.timeBegin.Bind(wx.adv.EVT_TIME_CHANGED, self.time_Begin)
self.dateEnd.Bind( wx.adv.EVT_DATE_CHANGED, self.date_End )
self.timeEnd.Bind(wx.adv.EVT_TIME_CHANGED, self.time_End)
self.btnGenerate.Bind( wx.EVT_BUTTON, self.clickBtn_Generate )
def __del__( self ):
pass
# Virtual event handlers, overide them in your derived class
def date_Begin( self, event ):
aStringDate = self.dateBegin.GetValue().Format("%m-%d-%y")
print(aStringDate)
return aStringDate
event.Skip()
def time_Begin(self):
aStringTime = self.timeBegin.GetTime()
print(aStringTime)
return aStringTime
def date_End( self, event ):
aStringDate = event.GetDate()
event.Skip()
def time_End(self, event):
aStringTime = event.GetDate()
print(aStringTime)
def clickBtn_Generate( self, event ):
a = self.date_Begin()
b = self.time_Begin()
list = []
list.append(a)
list.append(b)
print(list)
return list
event.Skip()
【问题讨论】:
-
行
a = self.date_Begin()将失败,因为根据签名date_Begin( self, event )缺少event的参数。请直接复制粘贴您的代码。 -
我继续发布了整个代码
标签: python datetime datepicker wxpython