作为一个菜鸟
最近学习了wxpython的一些用法,进而对上次的游戏登录代码进行了一些改进,使其更符合实际
经运行,界面还可以,由于刚学习wxpython,因此其界面还比较简单如
游戏登录GUI界面主要包括六部分:
1、主程序
import windos windos.windos()
2、登录GUI界面的各种按钮、文本框的设计。模块名为:windos,
import wx import log import sys def windos(): #按登录键后,将用户名、密码传入log模块 def log_in(event): name=ID.GetValue() passa=passage.GetValue() log.enter(name,passa) def cl(event): sys.exit() #创建应用程序 app=wx.App() #创建框架并固定框架位置与大小 win=wx.Frame(None,title='请输入您的账号与密码',style=wx.CAPTION) win.SetMaxSize((400,300)) win.SetMinSize((400,300)) win.Center() #增加背景组件 pan=wx.Panel(win) #增加用户名输入框,及其提示词 ID=wx.TextCtrl(pan,size=(250,30)) ID_name=wx.StaticText(pan,label='用户名') #增加密码输入框,及其提示词 passage=wx.TextCtrl(pan,size=(250,30)) passage_name=wx.StaticText(pan,label=' 密码 ') #增加登录按钮 btn=wx.Button(pan,label='登录') clos=wx.Button(pan,label='退出') #按键事件 btn.Bind(wx.EVT_BUTTON,log_in) clos.Bind(wx.EVT_BUTTON,cl) #将用户名输入框,及其提示词在水平位置调整好 hbox1=wx.BoxSizer() hbox1.Add(ID_name,proportion=0,flag=wx.LEFT,border=30) hbox1.Add(ID,proportion=0,flag=wx.LEFT,border=30) #将密码输入框,及其提示词在水平位置调整好 hbox2=wx.BoxSizer() hbox2.Add(passage_name,proportion=0,flag=wx.LEFT,border=30) hbox2.Add(passage,proportion=0,flag=wx.LEFT,border=30) #将登录按钮在水平位置调整好 hbox3=wx.BoxSizer() hbox3.Add(btn,proportion=0,flag=wx.LEFT,border=120) hbox3.Add(clos,proportion=0,flag=wx.LEFT,border=20) #将用户名输入框与、密码输入框、登录按钮在垂直位置固定好 vbox1=wx.BoxSizer(wx.VERTICAL) vbox1.Add(hbox1,proportion=0,flag=wx.TOP,border=20) vbox1.Add(hbox2,proportion=0,flag=wx.TOP,border=20) vbox1.Add(hbox3,proportion=0,flag=wx.TOP,border=50) pan.SetSizer(vbox1) win.Show() app.MainLoop()
3、账户、密码与账户信息比对,进而验证账户、密码正确的程序,模块名为:log
import wx import pickle import redister import clo_ok def enter(name,password): ''' 读取ID文件,验证正在注册的ID是否存在 ''' while 1: ''' 读取ID文件,验证账号是否存在,密码是否错误 ''' file2=open('账户信息.pkl','rb') all_ID=[] #读取文件所有用户名与密码,并以列表形式返回 while 1: try: a=pickle.load(file2) except EOFError: break all_ID.append(a) #将注册信息转化为字典 dict_ID=dict(all_ID) #将字典中所有用户名以列表形式返回 ID=dict_ID.keys() if name in ID: if dict_ID[name]==password: wx.Exit() clo_ok.clo(0) break else: wx.Exit() clo_ok.clo(1) else: clo_ok.clo(2)
4、注册信息写入文件的程序,模块名为:redister
import pickle import clo_ok def redisters(name,password): while 1: ''' 注册ID ''' ''' 读取ID文件,验证正在注册的ID是否存在 ''' file2=open('账户信息.pkl','rb') all_ID=[] #读取文件所有用户名与密码,并以列表形式返回 while 1: try: a=pickle.load(file2) except EOFError: break all_ID.append(a) #将注册信息转化为字典 dict_ID=dict(all_ID) #将字典中所有用户名以列表形式返回 ID=dict_ID.keys() #验证正在注册的ID是否存在 if name in ID: clo_ok.clo(4) break else: ''' 打开ID文件,写入注册信息 ''' file=open('账户信息.pkl','ab') account=(name,password) pickle.dump(account,file) file.close() clo_ok.clo(3) break def text(): redisters() if __name__=='__main__': text()
5、GUI注册页面的程序,模块名为:win_redister
import wx import sys import log import redister def redis(): #按注册键后,将用户名、密码传入log模块 def log_in(event): name=ID.GetValue() passa=passage.GetValue() wx.Exit() redister.redisters(name,passa) def cl(event): sys.exit() #创建应用程序 app=wx.App() #创建框架并固定框架位置与大小 win=wx.Frame(None,title='请注册您的账号与密码',style=wx.CAPTION) win.SetMaxSize((400,300)) win.SetMinSize((400,300)) win.Center() #增加背景组件 pan=wx.Panel(win) #增加用户名输入框,及其提示词 ID=wx.TextCtrl(pan,size=(250,30)) ID_name=wx.StaticText(pan,label='用户名') #增加密码输入框,及其提示词 passage=wx.TextCtrl(pan,size=(250,30)) passage_name=wx.StaticText(pan,label=' 密码 ') #增加注册按钮 btn=wx.Button(pan,label='注册') clos=wx.Button(pan,label='退出') #按键事件 btn.Bind(wx.EVT_BUTTON,log_in) clos.Bind(wx.EVT_BUTTON,cl) #将用户名输入框,及其提示词在水平位置调整好 hbox1=wx.BoxSizer() hbox1.Add(ID_name,proportion=0,flag=wx.LEFT,border=30) hbox1.Add(ID,proportion=0,flag=wx.LEFT,border=30) #将密码输入框,及其提示词在水平位置调整好 hbox2=wx.BoxSizer() hbox2.Add(passage_name,proportion=0,flag=wx.LEFT,border=30) hbox2.Add(passage,proportion=0,flag=wx.LEFT,border=30) #将注册按钮在水平位置调整好 hbox3=wx.BoxSizer() hbox3.Add(btn,proportion=0,flag=wx.LEFT,border=120) hbox3.Add(clos,proportion=0,flag=wx.LEFT,border=20) #将用户名输入框与、密码输入框、注册按钮在垂直位置固定好 vbox1=wx.BoxSizer(wx.VERTICAL) vbox1.Add(hbox1,proportion=0,flag=wx.TOP,border=20) vbox1.Add(hbox2,proportion=0,flag=wx.TOP,border=20) vbox1.Add(hbox3,proportion=0,flag=wx.TOP,border=50) pan.SetSizer(vbox1) win.Show() app.MainLoop()
6、其他显示信息,如,登陆成功,密码错误,账号错误请注册,账号注册成功等,模块名为:clo_ok
import wx import log import windos import win_redister lis=['登陆成功','密码错误','账号错误请注册','账号注册成功','用户名已存在'] def clo(k): def close(event): if k==0: wx.Exit() elif k==1: wx.Exit() windos.windos() elif k==2: wx.Exit() win_redister.redis() elif k==3: wx.Exit() windos.windos() elif k==4: wx.Exit() win_redister.redis() #创建应用程序 app=wx.App() #创建框架并固定框架位置与大小 win=wx.Frame(None,style=wx.CAPTION) win.SetMaxSize((400,300)) win.SetMinSize((400,300)) win.Center() #增加背景组件 pan=wx.Panel(win) #增加按钮 btn=wx.Button(pan,label=lis[k]) #按键事件 btn.Bind(wx.EVT_BUTTON,close) #将按钮在水平位置调整好 hbox=wx.BoxSizer() hbox.Add(btn,proportion=1,flag=wx.EXPAND,border=50) pan.SetSizer(hbox) win.Show() app.MainLoop()