资料完善界面练习
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_())