pyqt5资料完善界面练习

资料完善界面练习

 

import sys, math
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets, QtCore, QtGui
import random

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.dictProvince = {2: '北京', 3: '安徽', 4: '福建', 5: '甘肃', 6: '广东', 7: '广西', 8: '贵州', 9: '海南', 10: '河北',
                        11: '河南', 12: '黑龙江', 13: '湖北', 14: '湖南', 15: '吉林', 16: '江苏', 17: '江西', 18: '辽宁',
                        19: '内蒙古', 20: '宁夏', 21: '青海', 22: '山东', 23: '山西', 24: '陕西', 25: '上海', 26: '四川',
                        27: '天津', 28: '西藏', 29: '新疆', 30: '云南', 31: '浙江', 32: '重庆', 33: '香港', 34: '澳门',
                        35: '台湾'}

        self.dictCity = {2: {52: '北京'}, 3: {36: '安庆', 37: '蚌埠', 38: '巢湖', 39: '池州', 40: '滁州', 41: '阜阳', 42: '淮北',
                                       43: '淮南', 44: '黄山', 45: '六安', 46: '马鞍山', 47: '宿州', 48: '铜陵', 49: '芜湖', 50: '宣城',
                                       51: '亳州',
                                       3401: '合肥'},
                    4: {53: '福州', 54: '龙岩', 55: '南平', 56: '宁德', 57: '莆田', 58: '泉州', 59: '三明',
                        60: '厦门', 61: '漳州'}, 5: {62: '兰州', 63: '白银', 64: '定西', 65: '甘南', 66: '嘉峪关', 67: '金昌',
                                                 68: '酒泉', 69: '临夏', 70: '陇南', 71: '平凉', 72: '庆阳', 73: '天水', 74: '武威',
                                                 75: '张掖'},
                    6: {76: '广州', 77: '深圳', 78: '潮州', 79: '东莞', 80: '佛山', 81: '河源', 82: '惠州', 83: '江门',
                        84: '揭阳', 85: '茂名', 86: '梅州', 87: '清远', 88: '汕头', 89: '汕尾', 90: '韶关', 91: '阳江',
                        92: '云浮', 93: '湛江', 94: '肇庆', 95: '中山', 96: '珠海'}, 7: {97: '南宁', 98: '桂林', 99: '百色',
                                                                               100: '北海', 101: '崇左', 102: '防城港',
                                                                               103: '贵港', 104: '河池', 105: '贺州',
                                                                               106: '来宾', 107: '柳州',
                                                                               108: '钦州', 109: '梧州', 110: '玉林'},
                    8: {111: '贵阳', 112: '安顺', 113: '毕节', 114: '六盘水',
                        115: '黔东南', 116: '黔南', 117: '黔西南', 118: '铜仁', 119: '遵义'}, 9: {120: '海口', 121: '三亚',
                                                                                      122: '白沙', 123: '保亭', 124: '昌江',
                                                                                      125: '澄迈县', 126: '定安县', 127: '东方',
                                                                                      128: '乐东', 129: '临高县',
                                                                                      130: '陵水', 131: '琼海', 132: '琼中',
                                                                                      133: '屯昌县', 134: '万宁', 135: '文昌',
                                                                                      136: '五指山', 137: '儋州'},
                    10: {138: '石家庄', 139: '保定', 140: '沧州', 141: '承德', 142: '邯郸', 143: '衡水', 144: '廊坊', 145: '秦皇岛',
                         146: '唐山', 147: '邢台', 148: '张家口'}, 11: {149: '郑州', 150: '洛阳', 151: '开封', 152: '安阳', 153: '鹤壁',
                                                                 154: '济源', 155: '焦作', 156: '南阳', 157: '平顶山',
                                                                 158: '三门峡', 159: '商丘', 160: '新乡', 161: '信阳',
                                                                 162: '许昌', 163: '周口', 164: '驻马店', 165: '漯河',
                                                                 166: '濮阳'}, 12: {167: '哈尔滨', 168: '大庆',
                                                                                  169: '大兴安岭', 170: '鹤岗', 171: '黑河',
                                                                                  172: '鸡西', 173: '佳木斯', 174: '牡丹江',
                                                                                  175: '七台河',
                                                                                  176: '齐齐哈尔', 177: '双鸭山', 178: '绥化',
                                                                                  179: '伊春'},
                    13: {180: '武汉', 181: '仙桃', 182: '鄂州',
                         183: '黄冈', 184: '黄石', 185: '荆门', 186: '荆州', 187: '潜江', 188: '神农架林区', 189: '十堰', 190: '随州',
                         191: '天门', 192: '咸宁', 193: '襄樊', 194: '孝感', 195: '宜昌', 196: '恩施'}, 14: {197: '长沙', 198: '张家界',
                                                                                                 199: '常德', 200: '郴州',
                                                                                                 201: '衡阳', 202: '怀化',
                                                                                                 203: '娄底', 204: '邵阳',
                                                                                                 205: '湘潭', 206: '湘西',
                                                                                                 207: '益阳', 208: '永州',
                                                                                                 209: '岳阳', 210: '株洲'},
                    15: {211: '长春', 212: '吉林', 213: '白城', 214: '白山',
                         215: '辽源', 216: '四平', 217: '松原', 218: '通化', 219: '延边'}, 16: {220: '南京', 221: '苏州', 222: '无锡',
                                                                                      223: '常州', 224: '淮安', 225: '连云港',
                                                                                      226: '南通', 227: '宿迁', 228: '泰州',
                                                                                      229: '徐州', 230: '盐城',
                                                                                      231: '扬州', 232: '镇江'},
                    17: {233: '南昌', 234: '抚州', 235: '赣州', 236: '吉安', 237: '景德镇', 238: '九江',
                         239: '萍乡', 240: '上饶', 241: '新余', 242: '宜春', 243: '鹰潭'}, 18: {244: '沈阳', 245: '大连', 246: '鞍山',
                                                                                      247: '本溪', 248: '朝阳', 249: '丹东',
                                                                                      250: '抚顺', 251: '阜新', 252: '葫芦岛',
                                                                                      253: '锦州', 254: '辽阳',
                                                                                      255: '盘锦', 256: '铁岭', 257: '营口'},
                    19: {258: '呼和浩特', 259: '阿拉善盟', 260: '巴彦淖尔盟',
                         261: '包头', 262: '赤峰', 263: '鄂尔多斯', 264: '呼伦贝尔', 265: '通辽', 266: '乌海', 267: '乌兰察布市',
                         268: '锡林郭勒盟', 269: '兴安盟'}, 20: {270: '银川', 271: '固原', 272: '石嘴山', 273: '吴忠', 274: '中卫'},
                    21: {275: '西宁', 276: '果洛', 277: '海北', 278: '海东', 279: '海南', 280: '海西', 281: '黄南', 282: '玉树'},
                    22: {283: '济南', 284: '青岛', 285: '滨州', 286: '德州', 287: '东营', 288: '菏泽', 289: '济宁', 290: '莱芜',
                         291: '聊城', 292: '临沂', 293: '日照', 294: '泰安', 295: '威海', 296: '潍坊', 297: '烟台', 298: '枣庄',
                         299: '淄博'}, 23: {300: '太原', 301: '长治', 302: '大同', 303: '晋城', 304: '晋中', 305: '临汾', 306: '吕梁',
                                          307: '朔州', 308: '忻州', 309: '阳泉', 310: '运城'},
                    24: {311: '西安', 312: '安康', 313: '宝鸡', 314: '汉中',
                         315: '商洛', 316: '铜川', 317: '渭南', 318: '咸阳', 319: '延安', 320: '榆林'}, 25: {321: '上海'},
                    26: {322: '成都',
                         323: '绵阳', 324: '阿坝', 325: '巴中', 326: '达州', 327: '德阳', 328: '甘孜', 329: '广安', 330: '广元',
                         331: '乐山', 332: '凉山', 333: '眉山', 334: '南充', 335: '内江', 336: '攀枝花', 337: '遂宁', 338: '雅安',
                         339: '宜宾', 340: '资阳', 341: '自贡', 342: '泸州'}, 27: {343: '天津'}, 28: {344: '拉萨', 345: '阿里',
                                                                                            346: '昌都', 347: '林芝',
                                                                                            348: '那曲', 349: '日喀则',
                                                                                            350: '山南'},
                    29: {351: '乌鲁木齐', 352: '阿克苏',
                         353: '阿拉尔', 354: '巴音郭楞', 355: '博尔塔拉', 356: '昌吉', 357: '哈密', 358: '和田', 359: '喀什',
                         360: '克拉玛依', 361: '克孜勒苏', 362: '石河子', 363: '图木舒克', 364: '吐鲁番', 365: '五家渠', 366: '伊犁'},
                    30: {367: '昆明', 368: '怒江', 369: '普洱', 370: '丽江', 371: '保山', 372: '楚雄', 373: '大理', 374: '德宏',
                         375: '迪庆', 376: '红河', 377: '临沧', 378: '曲靖', 379: '文山', 380: '西双版纳', 381: '玉溪', 382: '昭通'},
                    31: {383: '杭州', 384: '湖州', 385: '嘉兴', 386: '金华', 387: '丽水', 388: '宁波', 389: '绍兴', 390: '台州',
                         391: '温州', 392: '舟山', 393: '衢州'}, 32: {394: '重庆'}, 33: {395: '香港'}, 34: {396: '澳门'},
                    35: {397: '台湾'}}

    def initUI(self):
        self.resize(800, 600)
        self.setWindowTitle('资料完善页面')
        self.setStyleSheet("background-color:rgb(135,206,235)")

        # 内部 显示图片 框属性
        self.label_tp = QLabel(self)
        # 内部 显示图片 框标题初始
        self.label_tp.setText("显示图片")
        # 内部窗口的宽度高度
        self.label_tp.setFixedSize(200, 80)
        # 内部窗口的显示位置
        self.label_tp.move(0, 0)
        # 内部窗口的内属性 font-size 字体大小,
        self.label_tp.setStyleSheet("QLabel{background:rgb(300,300,300,120,0.3);}"
                                    "QLabel{color:rgb(300,300,300,120,0.3);font-size:20px;font-weight:bold;font-family:宋体;}"
                                    )
        jpg = QtGui.QPixmap('./images/标志.jpg').scaled(self.label_tp.width(), self.label_tp.height())
        # 在窗体显示
        self.label_tp.setPixmap(jpg)

        # 会员注册 文字显示
        label_bj = 'border-width:1px;border-style:solid;font-size:25px;border-color:rgb(255,255,255,0.5);background-color:rgb(255,255,255,0.3);'
        self.label = QLabel(self)
        self.label.setText("资料完善")
        self.label.setOpenExternalLinks(True)#允许超链接
        self.label.move(100, 100)
        self.label.setFixedSize(600, 50)
        self.label.setStyleSheet(label_bj)
        self.label.setAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignCenter)

        label_wzbj = 'border-width:1px;border-style:solid;font-size:15px;border-color:rgb(0,0,0,0.5);background-color:rgb(255,255,255,0.3);'

        self.label_zh = QLabel(self)
        self.label_zh.setText("性别 :")
        self.label_zh.move(100, 170)
        self.label_zh.setFixedSize(100, 30)
        self.label_zh.setStyleSheet(label_wzbj)
        self.label_zh.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        self.label_xm = QLabel(self)
        self.label_xm.setText("证件编码 :")
        self.label_xm.move(100, 210)
        self.label_xm.setFixedSize(100, 30)
        self.label_xm.setStyleSheet(label_wzbj)
        self.label_xm.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        self.label_mm = QLabel(self)
        self.label_mm.setText("归属省市 :")
        self.label_mm.move(100, 250)
        self.label_mm.setFixedSize(100, 30)
        self.label_mm.setStyleSheet(label_wzbj)
        self.label_mm.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        self.label_qmm = QLabel(self)
        self.label_qmm.setText("家庭住址 :")
        self.label_qmm.move(100, 290)
        self.label_qmm.setFixedSize(100, 30)
        self.label_qmm.setStyleSheet(label_wzbj)
        self.label_qmm.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        self.label_lxdh = QLabel(self)
        self.label_lxdh.setText("联系电话 :")
        self.label_lxdh.move(100, 330)
        self.label_lxdh.setFixedSize(100, 30)
        self.label_lxdh.setStyleSheet(label_wzbj)
        self.label_lxdh.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        self.label_emil = QLabel(self)
        self.label_emil.setText("邮箱 :")
        self.label_emil.move(100, 370)
        self.label_emil.setFixedSize(100, 30)
        self.label_emil.setStyleSheet(label_wzbj)
        self.label_emil.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        #性别默认为空
        self.info1 = ''
        self.rb11 = QRadioButton('  帅哥', self)
        self.rb11.move(210, 170)
        self.rb11.setFixedSize(130, 30)
        self.rb11.setStyleSheet(label_wzbj)

        self.rb12 = QRadioButton('  美女', self)
        self.rb12.move(345, 170)
        self.rb12.setFixedSize(130, 30)
        self.rb12.setStyleSheet(label_wzbj)

        self.rb13 = QRadioButton('  其他', self)
        self.rb13.move(480, 170)
        self.rb13.setFixedSize(130, 30)
        self.rb13.setStyleSheet(label_wzbj)

        self.bg1 = QButtonGroup(self)
        self.bg1.addButton(self.rb11, 11)
        self.bg1.addButton(self.rb12, 12)
        self.bg1.addButton(self.rb13, 13)

        self.bg1.buttonClicked.connect(self.rbclicked)

        self.sr_xm = QLineEdit(self)
        self.sr_xm.setPlaceholderText("请输入您的证件编码")
        self.sr_xm.move(210, 210)
        self.sr_xm.setFixedSize(400, 30)
        self.sr_xm.setStyleSheet(label_wzbj)

        #籍贯选择省份
        self.sr_mm = QComboBox(self)
        self.sr_mm.addItems(['北京', '安徽', '福建', '甘肃', '广东', '广西', '贵州',
                             '海南', '河北', '河南', '黑龙江', '湖北', '湖南', '吉林',
                             '江苏', '江西', '辽宁', '内蒙古', '宁夏', '青海', '山东',
                             '山西', '陕西', '上海', '四川', '天津', '西藏', '新疆',
                             '云南', '浙江', '重庆', '香港', '澳门', '台湾'])
        self.sr_mm.move(210, 250)
        self.sr_mm.setFixedSize(195, 30)
        self.sr_mm.setStyleSheet(label_wzbj)
        self.sr_mm.activated.connect(self.sr_mmx_bd)

        # 籍贯选择地市
        self.sr_mmx = QComboBox(self)
        self.sr_mmx.addItems(['未知','不详'])
        self.sr_mmx.move(415, 250)
        self.sr_mmx.setFixedSize(195, 30)
        self.sr_mmx.setStyleSheet(label_wzbj)
        self.sr_mmx.currentIndexChanged.connect(self.sr_qmm_bd)



        self.sr_qmm = QLineEdit(self)
        self.sr_qmm.setPlaceholderText("请输入您的家庭住址")
        #self.sr_qmm.setEchoMode(QLineEdit.PasswordEchoOnEdit)  # 密码输入正常,之后特殊显示
        self.sr_qmm.move(210, 290)
        self.sr_qmm.setFixedSize(400, 30)
        self.sr_qmm.setStyleSheet(label_wzbj)

        self.sr_lxdh = QLineEdit(self)
        self.sr_lxdh.setPlaceholderText("请输入您的电话")
        self.sr_lxdh.move(210, 330)
        self.sr_lxdh.setFixedSize(400, 30)
        self.sr_lxdh.setStyleSheet(label_wzbj)

        self.sr_emil = QLineEdit(self)
        self.sr_emil.setPlaceholderText("请输入您的邮箱地址")
        self.sr_emil.move(210, 370)
        self.sr_emil.setFixedSize(400, 30)
        self.sr_emil.setStyleSheet(label_wzbj)

        #右侧确认
        self.label_zh_qr = QLabel(self)
        self.label_zh_qr.setText("*")
        self.label_zh_qr.move(620, 170)
        self.label_zh_qr.setFixedSize(100, 30)

        self.label_xm_qr = QLabel(self)
        self.label_xm_qr.setText("*")
        self.label_xm_qr.move(620, 210)
        self.label_xm_qr.setFixedSize(100, 30)

        self.label_mm_qr = QLabel(self)
        self.label_mm_qr.setText("*")
        self.label_mm_qr.move(620, 250)
        self.label_mm_qr.setFixedSize(100, 30)

        self.label_qmm_qr = QLabel(self)
        self.label_qmm_qr.setText("*")
        self.label_qmm_qr.move(620, 290)
        self.label_qmm_qr.setFixedSize(100, 30)

        self.label_lxdh_qr = QLabel(self)
        self.label_lxdh_qr.setText("")
        self.label_lxdh_qr.move(620, 330)
        self.label_lxdh_qr.setFixedSize(100, 30)

        self.label_emil_qr = QLabel(self)
        self.label_emil_qr.setText("")
        self.label_emil_qr.move(620, 370)
        self.label_emil_qr.setFixedSize(100, 30)

        #使用条款外链接
        self.label_sytk_qr = QLabel(self)
        self.label_sytk_qr.setText("请认真阅读:《使用条款》")
        self.label_sytk_qr.setOpenExternalLinks(True)#允许超链接
        self.label_sytk_qr.move(210, 410)
        self.label_sytk_qr.setFixedSize(200, 30)
        self.label_sytk_qr.setStyleSheet('font-size:15px;')

        #同意协议并注册
        self.bt1 = QPushButton('获取随机验证码', self)
        self.bt1.move(100, 450)
        self.bt1.setFixedSize(100, 30)
        # 设定时间
        self.count = 30
        self.bt1.clicked.connect(self.Action)
        self.time = QtCore.QTimer(self)
        # 每秒1000毫秒
        self.time.setInterval(1000)
        # 时间到触发 Refresh
        self.time.timeout.connect(self.Refresh)

        #随机码展示区
        self.label_sjm = QLabel(self)
        self.label_sjm.setText("随机码")
        self.label_sjm.move(210, 450)
        self.label_sjm.setFixedSize(60, 30)
        self.label_sjm.setStyleSheet(label_wzbj)
        self.label_sjm.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignCenter)

        #输入验证码
        self.sr_yzm = QLineEdit(self)
        self.sr_yzm.setPlaceholderText("请输入您的验证码")
        self.sr_yzm.move(280, 450)
        self.sr_yzm.setFixedSize(200, 30)
        self.sr_yzm.setStyleSheet(label_wzbj)

        #同意协议并注册
        self.bt2 = QPushButton('资料完善', self)
        self.bt2.move(490, 450)
        self.bt2.setFixedSize(120, 30)
        self.bt2.clicked.connect(self.register)

        self.label_zctg_qr = QLabel(self)
        self.label_zctg_qr.setText("")
        self.label_zctg_qr.move(620, 450)
        self.label_zctg_qr.setFixedSize(100, 30)

        self.show()

    def sr_mmx_bd(self):
        #循环获取省市关系表
        self.dictCity_ls=[]
        for i in self.dictCity:
            self.dictCity_ls.append(self.dictCity[i])
        print(len(self.dictCity_ls))
        #根据省编码对应地市列表
        self.dictCity_lsf = []
        for i in self.dictCity_ls[self.sr_mm.currentIndex()]:
            self.dictCity_lsf.append(self.dictCity_ls[self.sr_mm.currentIndex()][i])
        #给地市按钮传入数据
        self.sr_mmx.clear()
        self.sr_mmx.addItems(self.dictCity_lsf)
        self.dictCity_lsf=[]

    def sr_qmm_bd(self):
        self.sr_qmm.setText(self.sr_mm.currentText() + '省' + self.sr_mmx.currentText() + '市' )

    def rbclicked(self):
        sender = self.sender()
        if sender == self.bg1:
            if self.bg1.checkedId() == 11:
                self.info1 = '帅哥'
            elif self.bg1.checkedId() == 12:
                self.info1 = '美女'
            elif self.bg1.checkedId() == 13:
                self.info1 = '其他'
            else:
                self.info1 = ''
        #print(self.info1)

    def Action(self):
        if self.bt1.isEnabled():
            self.time.start()
            self.bt1.setEnabled(False)
            sjs = str(random.randint(0, 9999))
            #如果随机码长度不够4位,前面补零
            if len(sjs) < 4:
                sjs = '0' * (4 - len(sjs)) + sjs
            self.label_sjm.setText(sjs)



    def Refresh(self):
        if self.count > 0:
            self.bt1.setText(str(self.count) + '秒后重发')
            self.count -= 1
        else:
            self.time.stop()
            self.bt1.setText('获取随机验证码')
            self.bt1.setEnabled(True)
            # 点击发送后 count 重置为30
            self.count = 30

    def register(self):
        #先将标记还原
        self.label_zh_qr.setText('*')
        self.label_xm_qr.setText('*')
        self.label_mm_qr.setText('*')
        self.label_qmm_qr.setText('*')

        if self.info1 == '':
            self.label_zh_qr.setText('性别未选择')

        elif len(self.sr_xm.text()) == 0:
            self.label_xm_qr.setText('证件编码为空')

        elif self.sr_mmx.currentText() == '未知':
            self.label_mm_qr.setText('归属省市为空')

        elif len(self.sr_qmm.text()) == 0:
            self.label_qmm_qr.setText('家庭住址为空')

        elif len(self.sr_yzm.text()) == 0:
            self.label_zctg_qr.setText('验证码为空')

        elif self.label_sjm.text() != self.sr_yzm.text():
            self.label_zctg_qr.setText('验证码不一致')
        else:
            self.label_zctg_qr.setText('修改通过')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

你可能感兴趣的:(python)