python 学习总结2

python学习网 2017-10-16 21:00:04

作为一个菜鸟

最近学习了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()

  

  

 

  

阅读(822) 评论(0)