0
回答
wxpython事件驱动的函数调用问题
终于搞明白,存储TCO原来是这样算的>>>   
# -*- coding: utf-8 -*- 

###########################################################################
## Python code generated with wxFormBuilder (version Feb 26 2014)
## http://www.wxformbuilder.org/
##
## PLEASE DO "NOT" EDIT THIS FILE!
###########################################################################

import wx
import wx.xrc
import test

###########################################################################
## Class doctor1
###########################################################################

class doctor1 ( wx.Frame ):
	
	def __init__( self, parent ):
		wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"医院电子病历信息系统", pos = wx.DefaultPosition, size = wx.Size( 1280,720 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
		
		self.SetSizeHintsSz( wx.Size( 800,600 ), wx.Size( 1920,1080 ) )
		
		bSizer1 = wx.BoxSizer( wx.VERTICAL )
		
		bSizer1.SetMinSize( wx.Size( 800,600 ) ) 
		self.m_button5 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer1.Add( self.m_button5, 0, 0, 5 )
		
		self.m_button6 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer1.Add( self.m_button6, 0, 0, 5 )
		
		
		self.SetSizer( bSizer1 )
		self.Layout()
		
		self.Centre( wx.BOTH )
	
	def __del__( self ):
		pass
	

###########################################################################
## Class login
###########################################################################

class login ( wx.Frame ):
	
	def __init__( self, parent ):
		wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = u"医院电子病历信息系统", pos = wx.DefaultPosition, size = wx.Size( 400,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
		
		self.SetSizeHintsSz( wx.Size( 400,300 ), wx.Size( 400,300 ) )
		
		bSizer4 = wx.BoxSizer( wx.VERTICAL )
		
		bSizer4.SetMinSize( wx.Size( 400,300 ) ) 
		bSizer5 = wx.BoxSizer( wx.HORIZONTAL )
		
		
		bSizer5.AddSpacer( ( 0, 0), 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 88 )
		
		self.idtxt = wx.StaticText( self, wx.ID_ANY, u"帐号", wx.Point( -1,-1 ), wx.DefaultSize, 0 )
		self.idtxt.Wrap( -1 )
		bSizer5.Add( self.idtxt, 0, wx.ALIGN_CENTER_VERTICAL, 0 )
		
		self.userid = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer5.Add( self.userid, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL|wx.ALIGN_CENTER_VERTICAL, 10 )
		
		
		bSizer4.Add( bSizer5, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.EXPAND|wx.TOP|wx.LEFT, 20 )
		
		bSizer51 = wx.BoxSizer( wx.HORIZONTAL )
		
		
		bSizer51.AddSpacer( ( 0, 0), 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 88 )
		
		self.pwdtxt = wx.StaticText( self, wx.ID_ANY, u"密码", wx.DefaultPosition, wx.DefaultSize, 0 )
		self.pwdtxt.Wrap( -1 )
		bSizer51.Add( self.pwdtxt, 0, wx.ALIGN_CENTER_VERTICAL, 0 )
		
		self.userpwd = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, wx.TE_PASSWORD )
		bSizer51.Add( self.userpwd, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 10 )
		
		
		bSizer4.Add( bSizer51, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.LEFT, 20 )
		
		
		bSizer4.AddSpacer( ( 0, 0), 0, wx.TOP|wx.BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 10 )
		
		bSizer61 = wx.BoxSizer( wx.HORIZONTAL )
		
		
		bSizer61.AddSpacer( ( 0, 0), 0, wx.LEFT|wx.ALIGN_CENTER_VERTICAL, 100 )
		
		self.radio1 = wx.RadioButton( self, wx.ID_ANY, u"挂号处", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer61.Add( self.radio1, 0, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 0 )
		
		self.radio2 = wx.RadioButton( self, wx.ID_ANY, u"医生", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer61.Add( self.radio2, 0, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 )
		
		self.radio3 = wx.RadioButton( self, wx.ID_ANY, u"管理员", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer61.Add( self.radio3, 0, wx.ALIGN_CENTER_VERTICAL|wx.EXPAND, 5 )
		
		
		bSizer4.Add( bSizer61, 0, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.BOTTOM|wx.LEFT, 10 )
		
		bSizer6 = wx.BoxSizer( wx.VERTICAL )
		
		self.online = wx.Button( self, wx.ID_ANY, u"登录", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer6.Add( self.online, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 10 )
		
		self.offline = wx.Button( self, wx.ID_ANY, u"退出", wx.DefaultPosition, wx.DefaultSize, 0 )
		bSizer6.Add( self.offline, 0, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 5 )
		
		
		bSizer4.Add( bSizer6, 1, wx.EXPAND|wx.TOP, 0 )
		
		
		self.SetSizer( bSizer4 )
		self.Layout()
		
		self.Centre( wx.BOTH )
		
		# Connect Events
		self.online.Bind( wx.EVT_BUTTON, test.test )
		self.offline.Bind( wx.EVT_BUTTON, test.closewin )
	
	def __del__( self ):
		pass
#test


def test( self,event ):
    a=self.userid.GetValue()
    b=self.userpwd.GetValue()
    if a=='123' and b=='321':
        print 'True'
        
def closewin(self,event):
    self.Close(True)

#opengui

import wx
import gui

app = wx.App()
win = gui.login(None)
win.Show(True)
app.MainLoop()
问题1:我在第一段代码最后定义了2个按钮的事件,本来是把定义的函数放在gui.py里面的,经人帮助已经没什么问题了。但是定义多了就很乱,我就想把事件的函数放到test.py里,然后调用,但是调用的时候总是弹错:

TypeError: closewin() takes exactly 2 arguments (1 given)

TypeError: test() takes exactly 2 arguments (1 given)

什么原因,请高手指点。

问题2:为什么定义的事件的函数都要2个参数,self和event,event貌似还不是关键字,可以随便改,但是不能缺少,为什么?

问题3:我在第一段代码最后绑定事件函数的时候,比如test.test,为什么不能加括号,比如test.test(),加了就弹错,为什么?

刚开始学python不懂的地方太多,希望好心人指点一下,谢谢了!


举报
夹基妹抖
发帖于3年前 0回/310阅
顶部