def __init__(self, parent=None): super().__init__(parent) # 调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() # 创建UI对象 self.ui.setupUi(self) # 构造UI界面 self.setWindowTitle(bt) # 设置窗体标题 self.setWindowIcon(QIcon(tb)) # 设置窗体图标 # self.setStyleSheet("MainWindow{border-image:url(./python.jpg);}") #设置窗口背景图片 self.tab = {} # 空字典 global L db = self.connect_db() # 获取游标 self.cur = db.cursor(pymysql.cursors.DictCursor) # 使用字典类型输出 # 根据” ID 字段“排序,倒叙输出 人员信息 表中的数据。备注:asc是表示升序,desc表示降序。limit 1表示输出一条记录 sql_renyuan = "select * FROM 人员信息 WHERE 工号 = %s order by ID desc limit 1" rows = self.cur.execute(sql_renyuan, L[len(L) - 1]) rows = self.cur.fetchone() qiye = QLabel(bt) # 设置窗体标题 qiye.setMinimumWidth(150) gonghao = QLabel("工号:%s" % L[len(L) - 1]) gonghao.setMinimumWidth(120) xingming = QLabel("姓名:%s" % rows['姓名']) xingming.setMinimumWidth(120) bumen = QLabel("部门:%s" % rows['部门']) bumen.setMinimumWidth(120) zhiwei = QLabel("职位:%s" % rows['职位']) zhiwei.setMinimumWidth(120) curDateTime = QDateTime.currentDateTime() #提取系统当前日期时间 now = QDate.currentDate() #获取当前日期 week = datetime.now().isocalendar()[1] #当前日期的三元组(年号,第几周,第几天) riqi0 = curDateTime.toString("yyyy年MM月dd日 dddd " + '%s周 ' % week + '第%s天 ' % now.dayOfYear()) #日期与星期 riqi = QLabel(riqi0) self.ui.statusBar.addPermanentWidget( riqi) #addPermanentWidget为右侧,showMessage为左侧 self.ui.statusBar.addWidget(qiye) # 加到状态栏 self.ui.statusBar.addWidget(gonghao) self.ui.statusBar.addWidget(xingming) self.ui.statusBar.addWidget(bumen) self.ui.statusBar.addWidget(zhiwei) # cur = db.cursor(pymysql.cursors.DictCursor) # 1.控件的上面的小tab变成透明 # 2.选项卡部件:窗格{ 边框:1px纯灰;顶部:-1px;背景:透明;} # 3.突出选中的部分(改变颜色) # 4.设置QTabBar删除按钮图标和位置 # 4.设置QTabBar删除按钮图标(点击前) # 4.设置QTabBar删除按钮图标(点击时) str = "QTabBar::tab{background-color:rbg(255,255,255,0);}" + \ "QTabWidget:pane{border: 0.5px solid grey; top: -1px;background: transparent;}" + \ "QTabBar::tab:selected{color:blue;background-color:rbg(255,255,255);} " + \ "QTabBar::close-button{image: url(ICO/240.png);subcontrol-postion:left}" + \ "QTabBar::close-button:hover{image:url(ICO/301.png);subcontrol-postion:left}" + \ "QTabBar::close-button:pressed{image:url(ICO/302.png);subcontrol-postion:left}" self.ui.ZhuCaiDan.setStyleSheet(str) self.ui.ZhuCaiDan.setDocumentMode(True) self.ui.ZhuCaiDan.setCurrentIndex(0) # 显示第一个选项卡 self.ui.ZhuCaiDan.setTabsClosable(True) # 所有选项加上关闭按钮 self.ui.ZhuCaiDan.tabBar().setTabButton(0, QTabBar.RightSide, None) # 第一项去掉关闭按钮 self.ui.ZhuCaiDan.tabCloseRequested.connect( self.close_tab) # ZhuCaiDan(页)关闭函数取消
class zhujiemian_UI(QMainWindow): def __init__(self, parent=None): super().__init__(parent) # 调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() # 创建UI对象 self.ui.setupUi(self) # 构造UI界面 self.setWindowTitle(bt) # 设置窗体标题 self.setWindowIcon(QIcon(tb)) # 设置窗体图标 # self.setStyleSheet("MainWindow{border-image:url(./python.jpg);}") #设置窗口背景图片 self.tab = {} # 空字典 global L db = self.connect_db() # 获取游标 self.cur = db.cursor(pymysql.cursors.DictCursor) # 使用字典类型输出 # 根据” ID 字段“排序,倒叙输出 人员信息 表中的数据。备注:asc是表示升序,desc表示降序。limit 1表示输出一条记录 sql_renyuan = "select * FROM 人员信息 WHERE 工号 = %s order by ID desc limit 1" rows = self.cur.execute(sql_renyuan, L[len(L) - 1]) rows = self.cur.fetchone() qiye = QLabel(bt) # 设置窗体标题 qiye.setMinimumWidth(150) gonghao = QLabel("工号:%s" % L[len(L) - 1]) gonghao.setMinimumWidth(120) xingming = QLabel("姓名:%s" % rows['姓名']) xingming.setMinimumWidth(120) bumen = QLabel("部门:%s" % rows['部门']) bumen.setMinimumWidth(120) zhiwei = QLabel("职位:%s" % rows['职位']) zhiwei.setMinimumWidth(120) curDateTime = QDateTime.currentDateTime() #提取系统当前日期时间 now = QDate.currentDate() #获取当前日期 week = datetime.now().isocalendar()[1] #当前日期的三元组(年号,第几周,第几天) riqi0 = curDateTime.toString("yyyy年MM月dd日 dddd " + '%s周 ' % week + '第%s天 ' % now.dayOfYear()) #日期与星期 riqi = QLabel(riqi0) self.ui.statusBar.addPermanentWidget( riqi) #addPermanentWidget为右侧,showMessage为左侧 self.ui.statusBar.addWidget(qiye) # 加到状态栏 self.ui.statusBar.addWidget(gonghao) self.ui.statusBar.addWidget(xingming) self.ui.statusBar.addWidget(bumen) self.ui.statusBar.addWidget(zhiwei) # cur = db.cursor(pymysql.cursors.DictCursor) # 1.控件的上面的小tab变成透明 # 2.选项卡部件:窗格{ 边框:1px纯灰;顶部:-1px;背景:透明;} # 3.突出选中的部分(改变颜色) # 4.设置QTabBar删除按钮图标和位置 # 4.设置QTabBar删除按钮图标(点击前) # 4.设置QTabBar删除按钮图标(点击时) str = "QTabBar::tab{background-color:rbg(255,255,255,0);}" + \ "QTabWidget:pane{border: 0.5px solid grey; top: -1px;background: transparent;}" + \ "QTabBar::tab:selected{color:blue;background-color:rbg(255,255,255);} " + \ "QTabBar::close-button{image: url(ICO/240.png);subcontrol-postion:left}" + \ "QTabBar::close-button:hover{image:url(ICO/301.png);subcontrol-postion:left}" + \ "QTabBar::close-button:pressed{image:url(ICO/302.png);subcontrol-postion:left}" self.ui.ZhuCaiDan.setStyleSheet(str) self.ui.ZhuCaiDan.setDocumentMode(True) self.ui.ZhuCaiDan.setCurrentIndex(0) # 显示第一个选项卡 self.ui.ZhuCaiDan.setTabsClosable(True) # 所有选项加上关闭按钮 self.ui.ZhuCaiDan.tabBar().setTabButton(0, QTabBar.RightSide, None) # 第一项去掉关闭按钮 self.ui.ZhuCaiDan.tabCloseRequested.connect( self.close_tab) # ZhuCaiDan(页)关闭函数取消 # self.setWindowState(Qt.WindowMaximized) # 窗口最大化显示 # # 窗体居中设置 # deskSize = QDesktopWidget().screenGeometry() # 获取桌面窗体参数 # windowSize = self.geometry() # 获取窗体本身参数 # self.move((deskSize.width() - windowSize.width()) / 2, # (deskSize.height() - windowSize.height()) / 2-30) # 居中设置 # ZhuCaiDan(页)关闭函数; def close_tab(self, index): currentTab = self.ui.ZhuCaiDan.widget(index) # 获取选项卡的值 del self.tab[currentTab.objectName()] # 获取选项卡命名(objectName),删除对应数组 self.ui.ZhuCaiDan.removeTab(index) # 清除所选页面 # 添加指定选项卡,显示按钮 @Slot(bool) def on_actFont_ranyuanchaxun_triggered(self, clicked): if 'renyuanxinxi' in self.tab: self.ui.ZhuCaiDan.setCurrentIndex(self.tab['renyuanxinxi']) else: formDoc = UI_ryxx(self) formDoc.setAttribute(Qt.WA_DeleteOnClose) # 关闭时自动删除 title = "人员信息" #选项卡的命名 self.tab['renyuanxinxi'] = self.ui.ZhuCaiDan.count() curIndex = self.ui.ZhuCaiDan.addTab( formDoc, title) # 添加选项卡formDoc,以及标题title self.ui.ZhuCaiDan.setCurrentIndex(curIndex) self.ui.ZhuCaiDan.setVisible(True) @Slot(bool) def on_actFont_xiangmuxinxi_triggered(self, clicked): if 'xiangmuxinxi' in self.tab: self.ui.ZhuCaiDan.setCurrentIndex(self.tab['xiangmuxinxi']) else: formDoc = UI_xmxx(self) formDoc.setAttribute(Qt.WA_DeleteOnClose) # 关闭时自动删除 title = "项目信息" #选项卡的命名 self.tab['xiangmuxinxi'] = self.ui.ZhuCaiDan.count() curIndex = self.ui.ZhuCaiDan.addTab( formDoc, title) # 添加选项卡formDoc,以及标题title self.ui.ZhuCaiDan.setCurrentIndex(curIndex) self.ui.ZhuCaiDan.setVisible(True) # 数据库连接 def connect_db(self): try: file = open('my.ini', 'r') global L while True: d = file.readline() if not d: file.close() # 关闭文件 break cc = d.split('=')[1].strip() L.append(cc) # # 建立数据库连接 db = pymysql.connect( host=L[0], # 'localhost', # "192.168.202.1""127.0.0.1" port=int(L[1]), # 3306 user=L[2], # 'root' password=L[3], # '080420' db=L[4], # 'mysql' charset=str(L[5])) # 字体设置"utf8" return db except IOError: QMessageBox.about(self, '提示信息', '服务器链接失败') # 窗口关闭提示 def closeEvent(self, event): result = QMessageBox.question(self, '关闭提示框', '确定要退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.NoButton) if (result == QMessageBox.Yes): event.accept() else: event.ignore()
class zhujiemian(QMainWindow): def __init__(self, parent=None): super().__init__(parent) # 调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() # 创建UI对象 self.ui.setupUi(self) # 构造UI界面 self.setWindowTitle(bt) # 设置窗体标题 self.setWindowIcon(QIcon(tb)) # 设置窗体图标 # self.setStyleSheet("MainWindow{border-image:url(./python.jpg);}") #设置窗口背景图片 self.tab = {} # 空字典 global L db = self.connect_db() # 获取游标 self.cur = db.cursor(pymysql.cursors.DictCursor) # 使用字典类型输出 # 根据” ID 字段“排序,倒叙输出 人员信息 表中的数据。备注:asc是表示升序,desc表示降序。limit 1表示输出一条记录 sql_renyuan = "select * FROM 人员信息 WHERE 工号 = %s order by ID desc limit 1" rows = self.cur.execute(sql_renyuan, L[len(L) - 1]) rows = self.cur.fetchone() qiye = QLabel(bt) # 设置窗体标题 qiye.setMinimumWidth(150) gonghao = QLabel("工号:%s" % L[len(L) - 1]) gonghao.setMinimumWidth(120) xingming = QLabel("姓名:%s" % rows['姓名']) xingming.setMinimumWidth(120) bumen = QLabel("部门:%s" % rows['部门']) bumen.setMinimumWidth(120) zhiwei = QLabel("职位:%s" % rows['职位']) zhiwei.setMinimumWidth(120) curDateTime = QDateTime.currentDateTime() #提取系统当前日期时间 week = datetime.now().isocalendar()[1] #当前日期的三元组(年号,第几周,第几天) riqi0 = curDateTime.toString("yyyy年MM月dd日 dddd " + '%s周'%week) #日期与星期 riqi = QLabel(riqi0) self.ui.statusBar.addPermanentWidget(riqi) #addPermanentWidget为右侧,showMessage为左侧 self.ui.statusBar.addWidget(qiye) # 加到状态栏 self.ui.statusBar.addWidget(gonghao) self.ui.statusBar.addWidget(xingming) self.ui.statusBar.addWidget(bumen) self.ui.statusBar.addWidget(zhiwei) cur = db.cursor(pymysql.cursors.DictCursor) # 1.控件的上面的小tab变成透明 # 2.选项卡部件:窗格{ 边框:1px纯灰;顶部:-1px;背景:透明;} # 3.突出选中的部分(改变颜色) # 4.设置QTabBar删除按钮图标和位置 # 4.设置QTabBar删除按钮图标(点击前) # 4.设置QTabBar删除按钮图标(点击时) str = "QTabBar::tab{background-color:rbg(255,255,255,0);}" + \ "QTabWidget:pane{border: 0.5px solid grey; top: -1px;background: transparent;}" + \ "QTabBar::tab:selected{color:blue;background-color:rbg(255,255,255);} " + \ "QTabBar::close-button{image: url(ICO/240.png);subcontrol-postion:left}" + \ "QTabBar::close-button:hover{image:url(ICO/301.png);subcontrol-postion:left}" + \ "QTabBar::close-button:pressed{image:url(ICO/302.png);subcontrol-postion:left}" self.ui.ZhuCaiDan.setStyleSheet(str) # 使用父级构造一个空的日期编辑器。日期设置为date。 sty = "QDateEdit :: QDateEdit(const QDate&date,QWidget * parent = nullptr)" self.ui.xmxx_Q_riqi.setStyleSheet(sty) self.ui.ZhuCaiDan.setCurrentIndex(0) # 显示第一个选项卡 self.ui.ZhuCaiDan.setTabsClosable(True) # 所有选项加上关闭按钮 self.ui.ZhuCaiDan.tabBar().setTabButton(0, QTabBar.RightSide, None) # 第一项去掉关闭按钮 # self.ui.ZhuCaiDan.tabBar().setTabButton(1, QTabBar.RightSide, None) # # 第二项去掉关闭按钮 u = self.ui.ZhuCaiDan.count() # 获取选项卡数量 # 删除多余选项卡 while u > 0: self.ui.ZhuCaiDan.removeTab(u) u = u - 1 self.ui.ZhuCaiDan.tabCloseRequested.connect( self.close_tab) # ZhuCaiDan(页)关闭函数取消 # 窗体居中设置 deskSize = QDesktopWidget().screenGeometry() # 获取桌面窗体参数 windowSize = self.geometry() # 获取窗体本身参数 self.move((deskSize.width() - windowSize.width()) / 2, (deskSize.height() - windowSize.height()) / 2-30) # 居中设置 # self.LineEdit_Date() self.riqikuangxuanxiang(self.ui.ryxx_Q_riqi, self.ui.renyuanxinxi) # 创建日历控件 self.riqikuangxuanxiang(self.ui.ryxx_J_riqi, self.ui.renyuanxinxi) # ZhuCaiDan(页)关闭函数; def close_tab(self, index): # currentTab = self.ui.ZhuCaiDan.currentWidget() currentTab = self.ui.ZhuCaiDan.widget(index) # 获取选项卡的值 del self.tab[currentTab.objectName()] # 获取选项卡命名(objectName),删除对应数组 self.ui.ZhuCaiDan.removeTab(index) # 隐藏选项卡 # 添加日期控件 def LineEdit_Date(self): self.show_action = QAction(self) # 创建控件 self.show_action.setIcon(QIcon('ICO/png/1234864.png')) # 设置控件图标 self.ui.ryxx_Q_riqi.addAction(self.show_action, QLineEdit.TrailingPosition) # 控件放置位置 self.ui.ryxx_J_riqi.addAction(self.show_action, QLineEdit.TrailingPosition) # 控件放置位置 # 添加指定选项卡,显示按钮 @Slot(bool) def on_actFont_ranyuanchaxun_triggered(self, clicked): # self.ui.actFont_ranyuanchaxun.triggered.connect(self.add_tab_renyuanxinxi) # # 新增选项卡(标题等同) self.tab['renyuanxinxi'] = [ "部门", "组别", "职位", "工号", "姓名", "性别", "联系电话", "入职日期", "出生日期", "身份证号码", "地址", "待遇", "调薪日期", "离职日期", "备注"] self.add_tab( self.ui.renyuanxinxi, '人员信息', self.tab['renyuanxinxi'], self.ui.ryxx_tableWidget) # 添加tableWidgetn内容,查询按钮 @Slot() def on_ryxx_chaxun_clicked(self): # self.ui.ryxx_chaxun.clicked.connect(self.chaxun_ryxx) # 查询按钮 text = "select * FROM 人员信息;" self.chaxun(self.ui.ryxx_tableWidget, text, self.tab['renyuanxinxi']) # 退出按钮 @Slot() def on_ryxx_tuichu_clicked(self): index = self.ui.ZhuCaiDan.currentIndex() # 获取当前选项卡的值 self.ui.ZhuCaiDan.removeTab(index) # 隐藏选项卡 @Slot(bool) def on_actFont_xiangmuxinxi_triggered(self, clicked): # self.ui.actFont_xiangmuxinxi.triggered.connect(self.add_tab_xiangmuxingxi) # # 新增选项卡 self.tab['xiangmuxinxi'] = [ "内部编号", "客户编号", "模具等级", "业务担当", "项目担当", "设计担当", "钳工担当", "钳工组别", "下单日期", "首样日期", "预验日期", "复验日期", "终验日期", "要求移模日期", "实际移模日期", "出货判定", "备注"] self.add_tab( self.ui.xiangmuxinxi, '项目信息', self.tab['xiangmuxinxi'], self.ui.xmxx_tableWidget) @Slot() def on_xmxx_chaxun_clicked(self): text = "select * FROM 项目信息;" self.chaxun(self.ui.xmxx_tableWidget, text, self.tab['xiangmuxinxi']) @Slot() def on_xmxx_tuichu_clicked(self): index = self.ui.ZhuCaiDan.currentIndex() # 获取当前选项卡的值 self.ui.ZhuCaiDan.removeTab(index) # 隐藏选项卡 # 添加选项卡通用函数 def add_tab(self,tab: QWidget,biao_ti: str,biao_tou: list,tableWidgetX: QTableWidgetItem): # self.add_tab(self.ui.xiangmuxinxi, '项目信息', headerText, self.ui.tableWidget_xm) while self.ui.ZhuCaiDan.indexOf(tab) < 0: self.ui.ZhuCaiDan.addTab(tab, biao_ti) # 添加选项卡tab,以及标题biao_ti tableWidgetX.setColumnCount(len(biao_tou)) # 设置列数 tableWidgetX.setRowCount(0) # 设置数据区行数 tableWidgetX.setHorizontalHeaderLabels(biao_tou) # 设置列命名biao_tou tableWidgetX.setAlternatingRowColors(True) # 交替行颜色 selMode = QAbstractItemView.SelectRows tableWidgetX.setSelectionBehavior(selMode) # 选择行为:行选择 # selMode = QAbstractItemView.SelectItems # self.ui.ryxx_tableWidget.setSelectionBehavior(selMode) # ##选择行为:单元格选择 w = self.ui.ZhuCaiDan.indexOf(tab) self.ui.ZhuCaiDan.setCurrentIndex(w) tableWidgetX.setSortingEnabled(False) # 设置排序关闭 # 添加tableWidget内容通用函数 def chaxun(self,tableWidgetX: QTableWidgetItem,text: str,headerText: list): tableWidgetX.setSortingEnabled(False) # 设置排序关闭 tableWidgetX.clearContents() # 清空表格内容 tableWidgetX.setRowCount(0) # 设置数据区行数 rows = self.cur.execute(text) for i in range(rows): item = self.cur.fetchone() # 获取一组数组 row = tableWidgetX.rowCount() # 获得QTableWidget表格控件的行数 tableWidgetX.insertRow(row) # 插入行 for j in range(len(headerText)): if item[headerText[j]] is not None: items = QTableWidgetItem(item[headerText[j]]) tableWidgetX.setItem(i, j, items) else: pass tableWidgetX.resizeRowsToContents() # 自动行高 # tableWidgetX.resizeColumnsToContents() # 自动列宽 #设置表格头的伸缩模式,也就是让表格铺满整个QTableWidget控件 # self.ui.ryxx_tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) str="QHeaderView::up-arrow { subcontrol-position: center right; padding-right: 1px;" \ "image: url(ICO/ico/247.ico);}" + \ "QHeaderView::down-arrow { subcontrol-position: center right; padding-right: 1px;" \ "image: url(ICO/ico/248.ico);}" tableWidgetX.horizontalHeader().setStyleSheet(str) #修改排序图标的展现方式(修改图标、位置) # tableWidgetX.setSortIndicatorShown(bool show) # connect(tableWidgetX.horizontalHeader(), SIGNAL(sectionClicked(int)), # tableWidgetX, SLOT(sortByColumn(int))) # 连接信号与槽 # tableWidgetX.horizontalHeader().setSortIndicator(0, AscendingOrder) # tableWidgetX.horizontalHeader().setClickable(true) tableWidgetX.horizontalHeader().setSortIndicatorShown(True) # 显示排序图标 tableWidgetX.setSortingEnabled(True) # 设置排序已启用 # tableWidgetX.sortItems(2,Qt.DescendingOrder) # Qt.AscEndingOrder升序,Qt.DescendingOrder降序 # 数据库连接 def connect_db(self): try: file = open('my.ini', 'r') global L while True: d = file.readline() if not d: file.close() # 关闭文件 break cc = d.split('=')[1].strip() L.append(cc) # # 建立数据库连接 db = pymysql.connect( host=L[0], # 'localhost', # "192.168.202.1""127.0.0.1" port=int(L[1]), # 3306 user=L[2], # 'root' password=L[3], # '080420' db=L[4], # 'mysql' charset=str(L[5])) # 字体设置"utf8" return db except IOError: QMessageBox.about(self, '提示信息', '服务器链接失败') # 窗口关闭提示 def closeEvent(self, event): result = QMessageBox.question( self, '关闭提示框', '确定要退出吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.NoButton) if (result == QMessageBox.Yes): event.accept() else: event.ignore() # QLineEdit日期显示 def riqikuangxuanxiang(self,zujian:QLineEdit,jiemian:QWidget): # zujian.setInputMask("0000-00-00") #格式限制 # for i in range(4): # name = zujian.objectName() + str(i) # # locals()['v' + str(i)] = i # print(name) # self.show_action = zujian.objectName() # self.rili = jiemian.objectName() # print(self.show_action) # print(self.rili) zj = zujian.objectName() jm = jiemian.objectName() self.show_action = locals() #为了生成多个变量 self.rili = locals() self.show_action[zj] = QAction(self) #创建控件 self.show_action[zj].setIcon(QIcon('ICO/png/1234864.png')) #设置控件图标 zujian.addAction(self.show_action[zj], QLineEdit.TrailingPosition) #控件放置位置 self.show_action[zj].triggered.connect(self.openCalendar) # 信号和槽连接 self.rili[jm] = QCalendarWidget(jiemian) self.rili[jm].selectedDate() # 获取选中日期,默认当前系统时间 self.rili[jm].setGridVisible(True) # 是否显示日期之间的网格 self.rili[jm].setGeometry(zujian.x(),zujian.y()+zujian.height()+62, 280, 200) #日历控件位置 self.rili[jm].hide() # 隐藏日期控件 # date = self.rili.selectedDate()#获取选中日期,默认当前系统时间 self.rili[jm].clicked[QDate].connect(self.showDate)#clicked[参数],即定义showDate是传入的参数类型设置 self.rili = self.rili[jm] # self.show_action.triggered.connect(self.showDate(date,zujian)) def showDate(self,date): self.ui.ryxx_J_riqi.setText(date.toString("yyyy/MM/dd")) # self.rili.close()#关闭日期控件 self.rili.hide() # 隐藏日期控件 def openCalendar(self): if self.rili.isHidden(): self.rili.show() # 显示日期控件 else: # self.rili.close() # 关闭日期控件 self.rili.hide() # 隐藏日期控件
def __init__(self, parent=None): super().__init__(parent) # 调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() # 创建UI对象 self.ui.setupUi(self) # 构造UI界面 self.setWindowTitle(bt) # 设置窗体标题 self.setWindowIcon(QIcon(tb)) # 设置窗体图标 # self.setStyleSheet("MainWindow{border-image:url(./python.jpg);}") #设置窗口背景图片 self.tab = {} # 空字典 global L db = self.connect_db() # 获取游标 self.cur = db.cursor(pymysql.cursors.DictCursor) # 使用字典类型输出 # 根据” ID 字段“排序,倒叙输出 人员信息 表中的数据。备注:asc是表示升序,desc表示降序。limit 1表示输出一条记录 sql_renyuan = "select * FROM 人员信息 WHERE 工号 = %s order by ID desc limit 1" rows = self.cur.execute(sql_renyuan, L[len(L) - 1]) rows = self.cur.fetchone() qiye = QLabel(bt) # 设置窗体标题 qiye.setMinimumWidth(150) gonghao = QLabel("工号:%s" % L[len(L) - 1]) gonghao.setMinimumWidth(120) xingming = QLabel("姓名:%s" % rows['姓名']) xingming.setMinimumWidth(120) bumen = QLabel("部门:%s" % rows['部门']) bumen.setMinimumWidth(120) zhiwei = QLabel("职位:%s" % rows['职位']) zhiwei.setMinimumWidth(120) curDateTime = QDateTime.currentDateTime() #提取系统当前日期时间 week = datetime.now().isocalendar()[1] #当前日期的三元组(年号,第几周,第几天) riqi0 = curDateTime.toString("yyyy年MM月dd日 dddd " + '%s周'%week) #日期与星期 riqi = QLabel(riqi0) self.ui.statusBar.addPermanentWidget(riqi) #addPermanentWidget为右侧,showMessage为左侧 self.ui.statusBar.addWidget(qiye) # 加到状态栏 self.ui.statusBar.addWidget(gonghao) self.ui.statusBar.addWidget(xingming) self.ui.statusBar.addWidget(bumen) self.ui.statusBar.addWidget(zhiwei) cur = db.cursor(pymysql.cursors.DictCursor) # 1.控件的上面的小tab变成透明 # 2.选项卡部件:窗格{ 边框:1px纯灰;顶部:-1px;背景:透明;} # 3.突出选中的部分(改变颜色) # 4.设置QTabBar删除按钮图标和位置 # 4.设置QTabBar删除按钮图标(点击前) # 4.设置QTabBar删除按钮图标(点击时) str = "QTabBar::tab{background-color:rbg(255,255,255,0);}" + \ "QTabWidget:pane{border: 0.5px solid grey; top: -1px;background: transparent;}" + \ "QTabBar::tab:selected{color:blue;background-color:rbg(255,255,255);} " + \ "QTabBar::close-button{image: url(ICO/240.png);subcontrol-postion:left}" + \ "QTabBar::close-button:hover{image:url(ICO/301.png);subcontrol-postion:left}" + \ "QTabBar::close-button:pressed{image:url(ICO/302.png);subcontrol-postion:left}" self.ui.ZhuCaiDan.setStyleSheet(str) # 使用父级构造一个空的日期编辑器。日期设置为date。 sty = "QDateEdit :: QDateEdit(const QDate&date,QWidget * parent = nullptr)" self.ui.xmxx_Q_riqi.setStyleSheet(sty) self.ui.ZhuCaiDan.setCurrentIndex(0) # 显示第一个选项卡 self.ui.ZhuCaiDan.setTabsClosable(True) # 所有选项加上关闭按钮 self.ui.ZhuCaiDan.tabBar().setTabButton(0, QTabBar.RightSide, None) # 第一项去掉关闭按钮 # self.ui.ZhuCaiDan.tabBar().setTabButton(1, QTabBar.RightSide, None) # # 第二项去掉关闭按钮 u = self.ui.ZhuCaiDan.count() # 获取选项卡数量 # 删除多余选项卡 while u > 0: self.ui.ZhuCaiDan.removeTab(u) u = u - 1 self.ui.ZhuCaiDan.tabCloseRequested.connect( self.close_tab) # ZhuCaiDan(页)关闭函数取消 # 窗体居中设置 deskSize = QDesktopWidget().screenGeometry() # 获取桌面窗体参数 windowSize = self.geometry() # 获取窗体本身参数 self.move((deskSize.width() - windowSize.width()) / 2, (deskSize.height() - windowSize.height()) / 2-30) # 居中设置 # self.LineEdit_Date() self.riqikuangxuanxiang(self.ui.ryxx_Q_riqi, self.ui.renyuanxinxi) # 创建日历控件 self.riqikuangxuanxiang(self.ui.ryxx_J_riqi, self.ui.renyuanxinxi)
def __init__(self, parent=None): super().__init__(parent) # 调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() # 创建UI对象 self.ui.setupUi(self) # 构造UI界面 self.setWindowTitle(bt) # 设置窗体标题 # open = QAction(QIcon('ICO/240.png'), '240', self) # self.addAction(open) # 设置窗口LOGO # self.setStyleSheet("MainWindow{border-image:url(./python.jpg);}") # # 设置窗口背景图片 self.tab = {} # 空字典 global L db = self.connect_db() # 获取游标 self.cur = db.cursor(pymysql.cursors.DictCursor) # 使用字典类型输出 # 根据” ID 字段“排序,倒叙输出 人员信息 表中的数据。备注:asc是表示升序,desc表示降序。limit 1表示输出一条记录 sql_renyuan = "select * FROM 人员信息 WHERE 工号 = %s order by ID desc limit 1" rows = self.cur.execute(sql_renyuan, L[len(L) - 1]) rows = self.cur.fetchone() qiye = QLabel(bt) # 设置窗体标题 qiye.setMinimumWidth(150) gonghao = QLabel("工号:%s" % L[len(L) - 1]) gonghao.setMinimumWidth(120) xingming = QLabel("姓名:%s" % rows['姓名']) xingming.setMinimumWidth(120) bumen = QLabel("部门:%s" % rows['部门']) bumen.setMinimumWidth(120) zhiwei = QLabel("职位:%s" % rows['职位']) zhiwei.setMinimumWidth(120) self.ui.statusBar.addWidget(qiye) # 加到状态栏 self.ui.statusBar.addWidget(gonghao) self.ui.statusBar.addWidget(xingming) self.ui.statusBar.addWidget(bumen) self.ui.statusBar.addWidget(zhiwei) cur = db.cursor(pymysql.cursors.DictCursor) # 1.控件的上面的小tab变成透明 # 2.选项卡部件:窗格{ 边框:1px纯灰;顶部:-1px;背景:透明;} # 3.突出选中的部分(改变颜色) # 4.设置QTabBar删除按钮图标和位置 # 4.设置QTabBar删除按钮图标(点击前) # 4.设置QTabBar删除按钮图标(点击时) str = "QTabBar::tab{background-color:rbg(255,255,255,0);}" + \ "QTabWidget:pane{border: 0.5px solid grey; top: -1px;background: transparent;}" + \ "QTabBar::tab:selected{color:blue;background-color:rbg(255,255,255);} " + \ "QTabBar::close-button{image: url(ICO/240.png);subcontrol-postion:left}" + \ "QTabBar::close-button:hover{image:url(ICO/301.png);subcontrol-postion:left}" + \ "QTabBar::close-button:pressed{image:url(ICO/302.png);subcontrol-postion:left}" self.ui.ZhuCaiDan.setStyleSheet(str) self.ui.ZhuCaiDan.setCurrentIndex(0) # 显示第一个选项卡 self.ui.ZhuCaiDan.setTabsClosable(True) # 所有选项加上关闭按钮 self.ui.ZhuCaiDan.tabBar().setTabButton(0, QTabBar.RightSide, None) # 第一项去掉关闭按钮 # self.ui.ZhuCaiDan.tabBar().setTabButton(1, QTabBar.RightSide, None) # # 第二项去掉关闭按钮 u = self.ui.ZhuCaiDan.count() # 获取选项卡数量 # 删除多余选项卡 while u > 0: self.ui.ZhuCaiDan.removeTab(u) u = u - 1 self.ui.ZhuCaiDan.tabCloseRequested.connect( self.close_tab) # ZhuCaiDan(页)关闭函数 self.riqikuangxuanxiang(self.ui.ryxx_Q_riqi) self.riqikuangxuanxiang(self.ui.ryxx_J_riqi)