作为一个菜鸟
最近学习了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()