python的GUI之一个简单的登录界面

self代表这个类,所以要注意self的用法

先总结一下遇到的错误:

 

python positional argument follows keyword argument

位置参数在关键字参数之后

部分语句的关键字参数必须跟随在位置参数后面

因为python函数在解析参数时, 是按照顺序来的,位置参数不满足就没办法考虑其他的参数。

 

一个简单的python GUi程序运行时,报出错误 : PyNoAppError: The wx.App object must be created first!

要么把程序在python的cmd窗口运行,不然spyder会报错。

要么在spyder里的console输入del app,回车,再运行程序即可。

 

这个wxPython在导入时不用写这么多,import wx即可

import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,title='welcome',pos=(500,500),size=(200,200))
        #增加面板
        self.panel=wx.Panel(self)
        #增加静态文本控件
        self.user=wx.StaticText(parent=self.panel,label='user',pos=(10,5),size=(80,20))
        self.password=wx.StaticText(parent=self.panel,label='password',pos=(10,30),size=(80,20))
        #添加文本框
        self.inputN=wx.TextCtrl(parent=self.panel,pos=(80,5),size=(80,20))
        self.inputM=wx.TextCtrl(parent=self.panel,pos=(80,30),size=(80,20))
        #添加按钮
        self.buttonLogin=wx.Button(parent=self.panel,label='login',pos=(30,70),size=(50,20))
        #为按钮绑定事件处理方法
        self.Bind(wx.EVT_BUTTON,self.login,self.buttonLogin)
        #添加按钮
        self.buttonCancel=wx.Button(pos=(90,70),size=(50,20),parent=self.panel,label='cancel')
        #为按钮绑定事件处理方法
        self.Bind(wx.EVT_BUTTON,self.cancel,self.buttonCancel)
        #第一个参数为事件类型,第二个参数为响应函数名,第三个参数为事件来源组件名(见上方按钮)
    def login(self,event):
        name=self.inputN.GetValue()
        pwd=self.inputM.GetValue()
        if name=='admin' and pwd=='123456':
            dlg=wx.MessageDialog(self,'注册成功','Caution',wx.OK)
            dlg.ShowModal()
        else:
            dlg=wx.MessageDialog(self,'注册失败','Caution',wx.OK)
            dlg.ShowModal()

    def cancel(self,event):
        self.inputM.SetValue('')
        self.inputN.SetValue('')
        
if  __name__=='__main__':
    app=wx.App()
    frm=MyFrame()
    frm.Show()
    app.MainLoop()
        

 

你可能感兴趣的:(python,GUI)