爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10403|回复: 1

[混合编程] python之GUI---账号密码登录窗

[复制链接]

新浪微博达人勋

发表于 2019-10-9 09:33:54 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
pyGUI.jpg


#引入python制作GUI的wxPython包:
import wx


#新建GUI对象:
app=wx.App()


#新建总窗口:
frame=wx.Frame(None,id=-1,title='总窗口',
            name='总窗口',
            size=(400,300))


#窗口内新建画板:
panel=wx.Panel(frame)


#画板内新建标题静态文本:
title=wx.StaticText(panel,label='输入用户名和密码:')


#用户名的2个控件:
user_tip=wx.StaticText(panel,label='用户名:')
user_fill=wx.TextCtrl(panel,style=wx.TE_CENTER)


#密码的2个控件:
pwd_tip=wx.StaticText(panel,label='密  码:')
pwd_fill=wx.TextCtrl(panel,style=wx.TE_PASSWORD)


#确定按钮命名为ok,取消按钮命名为no
ok=wx.Button(panel,label='确定')
no=wx.Button(panel,label='取消')


#对用户名2个控件进行sizer:
user_sizer=wx.BoxSizer(wx.HORIZONTAL)
#加载控件:
user_sizer.Add(user_tip,proportion=0,flag=wx.ALL,border=5)
user_sizer.Add(user_fill,proportion=1,flag=wx.ALL,border=5)


#对密码2个控件进行sizer:
pwd_sizer=wx.BoxSizer(wx.HORIZONTAL)
pwd_sizer.Add(pwd_tip,proportion=0,flag=wx.ALL,border=5)
pwd_sizer.Add(pwd_fill,proportion=1,flag=wx.ALL,border=5)


#对2个按钮进行sizer:
bt_sizer=wx.BoxSizer(wx.HORIZONTAL)
bt_sizer.Add(ok,proportion=0,flag=wx.ALL,border=5)
bt_sizer.Add(no,proportion=1,flag=wx.ALL,border=5)


#对panel内所有控件进行sizer:
sizer=wx.BoxSizer(wx.VERTICAL)
sizer.Add(title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTER,border=15)
sizer.Add(user_sizer,proportion=0,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,border=45)
sizer.Add(pwd_sizer,proportion=0,flag=wx.EXPAND|wx.LEFT|wx.RIGHT,border=45)
sizer.Add(bt_sizer,proportion=0,flag=wx.TOP|wx.ALIGN_CENTER,border=15)


#画板加载sizer:
panel.SetSizer(sizer)


#加载字体:
font=wx.Font(12,wx.SCRIPT,wx.ITALIC,wx.BOLD,
             faceName='Microsoft YaHei')
title.SetFont(font)
user_tip.SetFont(font)
pwd_tip.SetFont(font)
ok.SetFont(font)
no.SetFont(font)


#[确定]按钮的响应程序:
#账号abc,密码123
def BUTTON_EVENT_OK(event):
    account=user_fill.GetValue()
    pwd=pwd_fill.GetValue()
    if account == '' or pwd == '':
        message='用户名和密码不能为空'
    elif account == 'abc' and pwd == '123':
        message='登录成功'
    else:
        message='用户名与密码不匹配'
    wx.MessageBox(message)#相当于IDL的dialog_message


#[取消]按钮的响应程序:
#按“取消”后清空账号和密码
def BUTTON_EVENT_NO(event):
    user_fill.SetValue('')
    pwd_fill.SetValue('')




#使用Bind绑定事件:
#按钮事件:wx.EVT_BUTTON
#鼠标移动事件:wx.EVT_MOTION
#鼠标进入窗口事件:wx.ENTER_WINDOW
#鼠标离开窗口事件:wx.LEAVE_WINDOW
#滚轮事件:wx.EVT_MOUSEWHEEL
ok.Bind(wx.EVT_BUTTON,BUTTON_EVENT_OK)
no.Bind(wx.EVT_BUTTON,BUTTON_EVENT_NO)


#2个最后的例行公事:
#显示窗口:
frame.Show()
#开始主循环:
app.MainLoop()

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-10-9 09:36:56 | 显示全部楼层
该案例涉及的知识:
1、先新建GUI组件,确定层级关系,最后用sizer布局
2、事件响应程序
3、字体款式加载
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表