import sys
import sqlite3
from PyQt5.QtCore import QCoreApplication,Qt, QRegExp, pyqtSlot, pyqtSignal, QDate
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox, QButtonGroup
from PyQt5.QtGui import QRegExpValidator
import prettytable as pt
from form_stu import *
from form_stu_info import *
import area
import basics as ba
class Form_StuInfo( QWidget, Ui_FormStuInfo):
def __init__(self):
super().__init__()
self.setupUi(self)
self.dateEdit_sbirth.setDate( QDate.currentDate())
self.all_validator()
self.choose_gender()
self.choose_native()
def all_validator(self):
regx1 = QRegExp("^[0-9]{8}$")
validator1 = QRegExpValidator(regx1, self.lineEdit_classno)
self.lineEdit_classno.setValidator(validator1)
regx2 = QRegExp("^[0-9]{10}$")
validator2 = QRegExpValidator(regx2, self.lineEdit_sno)
self.lineEdit_sno.setValidator(validator2)
def choose_gender(self):
"""选择性别"""
self.comboBox_sgender.clear()
self.dictSgender = {2: "男", 3: "女"}
for k, v in self.dictSgender.items():
self.comboBox_sgender.addItem(v, k)
def choose_native(self):
"""选择居住地"""
self.dictProvince = area.dictProvince
self.dictCity = area.dictCity
self.dictTown = area.dicTown
self.comboBox_province.clear() # 清空items
self.comboBox_province.addItem('请选择')
# 初始化省
for k, v in self.dictProvince.items():
self.comboBox_province.addItem(v, k) # 键、值反转
@pyqtSlot(int)
def on_comboBox_province_activated(self, index):
# 取省份名称
# value = self.comboBox_province.itemText(index)
# 取省份的键值
key = self.comboBox_province.itemData(index)
self.comboBox_town.clear() # 清空items
self.comboBox_city.clear() # 清空items
if key:
# self.lblResult.setText('未选择!')
self.comboBox_city.addItem('请选择')
# 初始化市
for k, v in self.dictCity[key].items():
self.comboBox_city.addItem(v, k) # 键、值反转
@pyqtSlot(int)
def on_comboBox_city_activated(self, index):
# 取市的名称
# value = self.comboBox_city.itemText(index)
# 取市的键值
key = self.comboBox_city.itemData(index)
self.comboBox_town.clear() # 清空items
if key:
self.comboBox_town.addItem('请选择')
# 初始化县区
for k, v in self.dictTown[key].items():
self.comboBox_town.addItem(v, k) # 键、值反转
def getsnative(self):
province_index = self.comboBox_province.currentIndex() #返回索引
city_index = self.comboBox_city.currentIndex()
province_name = self.comboBox_province.itemText(province_index) #通过索引查询文字
city_name = self.comboBox_city.itemText(city_index)
town_index = self.comboBox_town.currentIndex()
town_name = self.comboBox_town.itemText(town_index)
if town_name == "请选择":
snative = province_name + "省" + city_name + "市"
else:
snative = province_name + "省" + city_name + "市" + town_name
return snative
def confirm_sno(self):
"""确认学号是否为正确格式"""
self.sno_count = 1
sno_str = None
sno = self.lineEdit_sno.text()
if len(sno) == 0:
sno_str = "学号为空"
elif len(sno) < 10:
sno_str = "学号的长度低于10位"
elif not sno.isdigit():
sno_str = "学号不能包含字母"
if sno_str != None:
QMessageBox.warning(self, "警告", sno_str)
self.sno_count = 0
def confirm_classno(self):
"""确认班级是否为正确格式"""
self.classno_count = 1
classno_str = None
classno = self.lineEdit_classno.text()
if len(classno) == 0:
classno_str = "班级信息为空"
elif len(classno) < 8:
classno_str = "班号的长度低于8位"
elif not classno.isdigit():
classno_str = "班号不能包含字母"
if classno_str != None:
QMessageBox.warning(self, "警告", classno_str)
self.classno_count = 0
def confirm_sname(self):
"""确认姓名是否为正确格式"""
self.sname_count = 1
sname_str = None
sname = self.lineEdit_sname.text()
if len(sname) == 0:
sname_str = "姓名为空"
if sname_str != None:
QMessageBox.warning(self, "警告", sname_str)
self.sname_count = 0
def final_confirm(self):
""" 确保所有的参数都有数据"""
save_count = 0
self.confirm_sno()
if self.sno_count:
self.confirm_classno()
if self.classno_count:
self.confirm_sname()
if self.sname_count:
province_index = self.comboBox_province.currentIndex()
city_index = self.comboBox_city.currentIndex()
province_name = self.comboBox_province.itemText(province_index)
city_name = self.comboBox_city.itemText(city_index)
if province_name == "请选择" or city_name == "请选择":
QMessageBox.warning(self, "警告",
"居住地信息必须需要选择省份和城市")
else:
save_count = 1
#self.sinOut.emit(save_count)
return save_count
def clear_lineEdit(self):
"""重置清空的方法"""
self.lineEdit_sno.setText("")
self.lineEdit_classno.setText("")
self.lineEdit_sname.setText("")
self.comboBox_sgender.setCurrentIndex(0) # 用于设置当前的索引
self.comboBox_town.setCurrentIndex(-1) #- 1表示未设置当前项目的空组合框或组合框
self.comboBox_city.setCurrentIndex(-1)
#self.dateEdit_sbirth.setDateTime( QDateTime.currentDateTime())
self.dateEdit_sbirth.setDate( QDate.currentDate())
self.comboBox_province.setCurrentIndex(0) # 0是“请选择”
class StuPage(QWidget, Ui_FormStu):
def __init__( self, cn):
super().__init__()
self.setupUi(self)
self.cn = cn
# print( self.cn)
# 一样类型的框架,同样需要检查,区别在于最后是添加还是修改
self.form_stuinfo1 = Form_StuInfo()
self.verticalLayout_stuadd_1.addWidget( self.form_stuinfo1)
self.form_stuinfo2 = Form_StuInfo()
self.verticalLayout_stumod2_1.addWidget( self.form_stuinfo2)
self.all_validator()
self.buttons_group()
self.buttons_click()
def all_validator(self):
regx = QRegExp("^[0-9]{10}$")
validator1 = QRegExpValidator(regx, self.lineEdit_stumod_sno)
self.lineEdit_stumod_sno.setValidator(validator1)
validator2 = QRegExpValidator(regx, self.lineEdit_studel_sno)
self.lineEdit_studel_sno.setValidator(validator2)
def buttons_group(self):
self.stuquery_buttongroup = QButtonGroup()
self.stuquery_buttongroup.addButton( self.Button_stuquery_sno, 0)
self.stuquery_buttongroup.addButton( self.Button_stuquery_sname, 1)
self.stuquery_buttongroup.addButton( self.Button_stuquery_sgender, 2)
self.stuquery_buttongroup.addButton( self.Button_stuquery_classno, 3)
self.stuquery_buttongroup.addButton( self.Button_stuquery_snative, 4)
self.stusort_buttong
wujinxia
- 粉丝: 52
- 资源: 3
最新资源
- 基于SAR-ADC与OTA运放的PLL锁相环与Bandgap基准电源视频教学进阶,SAR-ADC 运放OTA PLL锁相环基础,pll进阶 bandgap基准电源 LDO 视频教学 ,SAR-ADC
- "两种方法求解MTPA数值解析详解" 或者 "探讨MTPA数值求解的两种策略",MTPA数值求解两种方法 ,MTPA数值求解; 两种方法; 优化算法; 迭代法; 解析法; 计算方法; 精确度比较 ,M
- 医药洁净室空调箱多模式控制程序详解:西门子PLC与昆仑通泰触摸屏联合应用,停止模式、生产模式、值班模式、消毒循环与排风模式控制逻辑解析,医药洁净室空调箱各种模式实现程序介绍 西门子1500 PLC+昆
- 《Abaqus模拟结构调谐质量阻尼器与惯容器制作教程:飞轮转动惯量与丝杠螺距详解》,abaqus生成结构调谐质量阻尼器和惯容器,模拟丝杠螺距,飞轮转动惯量,惯容系数 视频讲解 ,核心关键词:Abaq
- 电-气-热综合能源系统耦合优化调度模型:基于MATLAB YALMIP与CPLEX、Gurobi求解器的细致文档参考,MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化
- 基于Ansoft Maxwell的电磁场有限元仿真:无线电能传输与电机建模研究,ansoft ansys Maxwell 有限元仿真 电磁场模型 主要为无线电能传输WPT 磁耦合谐振 多相多绕组变压
- 30KW储能双向逆变PCSPS设计方案资料:含双向DCDC与三电平逆变技术、仿真源码、原理图及控制器源码,30KW储能PCS逆变器双向变流器设计方案资料,双向DCDC和三电平逆变PCS 1.此系列为
- MATLAB驱动的ASR防滑转模型:PID与对照控制算法对比,冰雪路面条件下滑移率与车速轮速对照图展示,MATLAB驱动防滑转模型ASR模型 ASR模型驱动防滑转模型 ?牵引力控制系统模型 选择PID
- MATLAB七自由度分布式驱动电动汽车模型的动态仿真与模糊控制策略探究,MATLAB分布式驱动电动汽车模型 MATLAB七自由度整车模型 分布式驱动电动车整车模型 四轮驱动电动车整车模型 轮毂电机电动
- EPS电动助力转向系统:基于MATLAB/Simulink模型搭建与单模型仿真分析,EPS汽车电动助力转向模型 MATLAB电动助力转向模型 Simulink电动助力转向模型 总体模型搭建包括:EPS
- 高频方波电压注入法用于零低速IPMSM无感控制算法仿真研究:转子位置精确估计与动态性能优化,高频方波电压注入零低速IPMSM无感控制算法仿真,在估计的d轴注入高频方波电压来估计转子位置,具有较高的稳态
- Labview Nivision视觉程序:LV2014版源程序,仿视觉助手功能强大,大部分功能可用,Labview Nivision视觉程序,labview源程序,大部分功能可以用,仿视觉助手的 版
- 基于双闭环SVPWM羊角波调制的二极管钳位型NPC控制系统:理论推导与实践应用,高质量电能输出,功率稳定且波形清晰 ,双闭环SVPWM(羊角波)调制的二极管钳位型NPC控制系统,手写理论推导 DC:8
- RSLogix系列软件授权授权详解与版本更新通知:涵盖RSLogix 5000 Studio编程VMware环境支持及固件版本信息,AB罗克韦尔 RSLogix5000 V10-20.5 Studio
- MATLAB滑动窗口函数:高效生成机器学习样本数据,适用于数据分帧与一维原始数据处理,MATLAB加窗滑动窗口程序,MATLAB数据处理,可以直接对一维原始数据生成样本 找了好久的滑动窗口的程序都
- 移相全桥ZVS零电压开通技术:实现滞后桥臂辅助电流源网络,开关频率达20kHz,功率输出500W,输入与输出电压分别为350V与50V ,移相全桥ZVS零电压开通 增加了辅助电流源网络实现滞后桥臂ZV
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈