sz_log_record,是我的日志记录,没有的可以替换为 print
p = re.compile(r'(?:[0-9a-fA-F]:?){12}')
data = re.findall(p, data) # 匹配Mac地址
匹配 开头-结尾 的数据
titkes = re.findall((r'开头(.*?)结尾'),data1)
titkes = re.findall((r'var _error = "(.*?)"\n'), r_res.text)
fileName = 'C:/Users/SH/Desktop/导入设备.xlsx'
fileName2 = fileName.split('/')[-1] # 导入设备.xlsx
signal_Popup_Qtime_QtCore = QtCore.pyqtSignal(str, str) # 弹窗信号
self.signal_Popup_Qtime_QtCore.connect(self.signal_Popup) # 弹窗信号
def signal_Popup(self, newtypes, news):
""" 弹窗提示功能 """
try:
if newtypes == '警告' or newtypes == '告警':
QMessageBox.warning(self, '警告', news)
if newtypes == '提示':
QMessageBox.information(self, '提示', news)
if newtypes == '危险':
QMessageBox.critical(self, '危险', news)
if newtypes == '问答':
QMessageBox.question(self, '问答', news)
if newtypes == '关于':
QMessageBox.about(self, '关于', news)
if newtypes == '自定义提示':
self.class_add_tishi_SHOW(news)
if newtypes == '自动关闭':
infoBox = QMessageBox()
infoBox.setIcon(QMessageBox.Information)
infoBox.setWindowTitle('提示窗1秒自动关闭')
infoBox.setText(news)
infoBox.setStandardButtons(QMessageBox.Ok)
infoBox.button(QMessageBox.Ok).animateClick(1*1000) #1秒自动关闭
infoBox.exec_()
# import win32api, win32con
# win32api.MessageBox(0,'警告',news,win32con.MB_OK)
except Exception as e:
print('signal_Popup弹窗提示功能异常:%s' % e)
def thread_it(self,func, *args):
"""将函数打包进线程"""
t = threading.Thread(target=func, args=args)
t.setDaemon(True)
t.start()
config_init.set('CONFIG_SH', 'config_p_url', self.comboBox.currentText())
config_init.write(open("Config/Config.ini", "w", encoding='utf-8-sig')) # 执行保存
config_p_url = config_init.get('CONFIG_SH', 'config_p_url') # 读取数据
res = self.http_request(cookie=cookie, router=Divisions, method='GET', type='urlencode')
res.encoding = 'utf-8'
rest = json.loads(res.text)[0]
s16 = '0700af5224a9a3016201'
int_data = int(s16,16)
print(int_data)
hex_number = hex(int_data)
print(hex_number)
if hex_number.startswith('0x'):
hex_number = hex_number[2:]
print(hex_number)
https://blog.csdn.net/sanylove/article/details/124591871
with open(f_name, 'rb') as f:
f_data = f.read()
with open(f_name, 'wb') as code:
code.write(f_data)
my_text = "http://" + text # 合成访问连接
QtGui.QDesktopServices.openUrl(QtCore.QUrl(my_text)) # 调用默认浏览器访问网站
def log_f():
try:
path = ".\logs"
os.startfile(path)
except Exception as e:
sz_log.info('日志文件不存在', e)
def ctalog(self):
"""文件存放路径使用记事本打开日志文件"""
try:
if int((self.get_FileSize(config_log_name))) < 10:
win32api.ShellExecute(0, 'open', 'notepad.exe', log_name, '', 1)
else:
path = ".\logs"
os.startfile(path)
except Exception as e:
sz_log.info(e, '文件存放路径使用记事本打开日志文件 错误')
def cta_instruction():
try:
f_name = r'.\tmp\tftp\使用说明.pdf'
os.startfile(f_name)
except Exception as e:
sz_log.info(e, '打开使用说明错误')
thread_num = len(threading.enumerate())
print("【主线程线程数量】:%d \n" % thread_num)
# 打印出当前线程的名称和id
# print("线程名称",threading.currentThread().name)
# print("线程ID",threading.currentThread().ident)
def set_QLineEdit_QValidator(self):
""" 自定义QLineEdit控件与校验器QValidator"""
regExp_name = QRegExp('^[a-zA-Z]\w{5,32}$') # 账号
regExp_password = QRegExp('^[a-zA-Z][a-zA-Z0-9_]{4,15}$') # 密码
self.lineEdit.setValidator(QRegExpValidator(regExp_name))
self.lineEdit_2.setValidator(QRegExpValidator(regExp_password))
self.tableWidget.horizontalHeader().sectionClicked.connect(self.sorting_date) # 表头单击信号排序
self.tableWidget.horizontalHeader().setSortIndicatorShown(True) # 显示排序图标(默认为上下箭头
self.orderType = Qt.DescendingOrder
def sorting_date(self,index):
"""Qt.AscendingOrder / 降序的方式排列 Qt.DescendingOrder"""
try:
if self.orderType == Qt.DescendingOrder and index != 0:
self.orderType = Qt.AscendingOrder
else:
if index != 0:
self.orderType = Qt.DescendingOrder
self.tableWidget.sortItems(index, self.orderType)
except Exception as e:
sz_log_record.error(('排序异常:', e))
self.lineEdit_search.returnPressed.connect(self.tableWidget_search) # 输入栏回车快捷
def tableWidget_search():
print('回车快捷')
def set_lineEdit_ui_add_button(self):
""" lineEdit 增加搜索按钮"""
self.clearAction = QAction(self)
self.clearAction.setIcon(QIcon(":/png/sh_ico/szpng/查询.png"))
self.clearAction.setToolTip("点击搜索")
self.lineEdit_search.addAction(self.clearAction, QLineEdit.TrailingPosition)
self.clearAction.triggered.connect(self.tableWidget_search)
orgList = ['867296053193104','867296053193104',3,7,7,5]
#list()方法是把字符串str或元组转成数组
formatList = list(set(orgList))
print (formatList)
self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) # 设置全列不可编辑
self.tableWidget.setItemDelegateForColumn(0, EmptyDelegate(self)) # 指定第0列不可编辑
self.tableWidget.setItemDelegateForColumn(2, EmptyDelegate(self)) # 指定第2列不可编辑
class EmptyDelegate(QItemDelegate):
"""项目委托列不可编辑"""
def __init__(self,parent):
super(EmptyDelegate, self).__init__(parent)
def createEditor(self, QWidget, QStyleOptionViewItem, QModelIndex):
""" 项目委托列不可编辑 """
return None
lies_column = int(self.tableWidget.columnCount()) # 获取当前表格共有多少列
lies_rowCount = int(self.tableWidget.rowCount()) # 获取当前表格共有多少行
#创建表列名
self.tableWidget.setHorizontalHeaderLabels(['第一列','第二列','第三列'])
#获取数据
row = 行
lie = 列
data1 = self.tableWidget.item(row, lie).text()
Run_number = int(self.tableWidget.cellWidget(row, 8).value()) # QtWidgets.QSpinBox() 执行次数
#设置写入数据
data1 = QtWidgets.QTableWidgetItem('数据')
data1.setTextAlignment(QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) #居中对齐
data1.setForeground(QBrush(QColor(255, 0, 0))) #设置字体颜色
self.tableWidget.setItem(0, 3, QtWidgets.QTableWidgetItem(data1)) #执行写入数据
#QtCore.Qt.AlignTop ,QtCore.Qt.AlignBottom ,QtCore.Qt.AlignVCenter
# 设置字体颜色
self.tableWidget.item(row, lie).setForeground(QBrush(QColor(255, 0, 0))) #字体颜色红色
self.tableWidget.item(row, lie).setBackground(QColor(0,60,10)) #设置单元格背景颜色
self.tableWidget.item(row, lie).setFont(QFont("微软雅黑", 12))
# 水平方向,表格大小自动拓展到适当的尺寸
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) #不可左右移动
self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents) #可左右移动
# 最后一列填充满表格
self.tableWidget.horizontalHeader().setStretchLastSection(true)
# 标题头透明
self.tableWidget.horizontalHeader().setStyleSheet("QHeaderView::section{background:rgba(0,0,0,0);}")
# 设置整行选择一次选择一行
self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
# 选中一列
self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectColumns)
# 选中单个单元格
self.tableWidget.setSelectionBehavior(QAbstractItemView.SelectItems)
# 只能单选
self.tableWidget.setSelectionMode(QAbstractItemView.SingleSelection)
# 行表头,进行隐藏
self.tableWidget.verticalHeader().setVisible(False) #隐藏列表头
self.tableWidget.horizontalHeader().setVisible(False) #隐藏行表头
# 设置0行高50像素
self.tableWidget.setRowHeight(0, 50)
# 自定义第0列 列宽100像素
self.tableWidget.setColumnWidth(0, 100)
# 设置表头高度
self.tableWidget.horizontalHeader().setMinimumHeight(35)
# 不显示表格网线
self.tableWidget.setShowGrid(False) #不显示
self.tableWidget.setShowGrid(true) #显示表格
# 清除已有的行列
row = int(self.tableWidget.rowCount()) # 获取当前表格共有多少行
self.tableWidget.removeRow(row)
#不响应鼠标单击
self.tableWidget.headerView.setClickable(false)
#合并单元格
self.tableWidget.setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的 1行数 2列数 要合并的 3行数 4列数
# 设置某一列不可编辑第2列不可编辑
self.tableWidget.setItemDelegateForColumn(1, EmptyDelegate(self))
# 设置全列不可编辑
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) #不能对表格内容进行修改
self.tableWidget.setEditTriggers(QAbstractItemView.CurrentChanged)#任何时候都能对单元格修改
self.tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked) #双击单元格
self.tableWidget.setEditTriggers(QAbstractItemView.SelectedClicked)#单击已选中的内容
self.tableWidget.setEditTriggers(QAbstractItemView.EditKeyPressed)#当在项目上按下平台编辑键时,编辑就开始了。
self.tableWidget.setEditTriggers(QAbstractItemView.AnyKeyPressed)#按下任意键就能修改
self.tableWidget.setEditTriggers(QAbstractItemView.AllEditTriggers)#以上条件全包括
#设置鼠标跟踪
self.tableWidget.setMouseTracking(True) # 设置跟踪鼠标tableWidget
self.tableWidget.cellEntered.connect(self.upa_ui) # 设置跟踪tableWidget 更新UI
# 设置鼠标右键功能
self.tableWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) # 鼠标右键功能绑定
self.tableWidget.customContextMenuRequested[QtCore.QPoint].connect(self.my_right_click) # 鼠标右键功能打开浏览器
# 在单元格里加入控件 QtWidgets.QSpinBox(),QPushButton('开始'),QtWidgets.QCheckBox()
send_Btn = QPushButton('开始') # 开始按钮
send_Btn.setIcon(QtGui.QIcon(":/png/shuncom_ico/开启2.png"))
send_Btn.clicked.connect(lambda: self.run_test()) #绑定函数
self.tableWidget.setCellWidget(x, 10, send_Btn) #执行添加
#查找数据定位
try:
text = str(self.lineEdit.text())
items = self.tableWidget.findItems(text, QtCore.Qt.MatchExactly) #遍历表查找对应的item
item = items[0]
item.setSelected(True) # 选中单元格
#item.setForeground(QBrush(QColor(255, 0, 0))) # 设置单元格的背脊颜色为红
row = item.row()
# 通过鼠标滚轮定位,快速定位到第十一行
self.tableWidget.verticalScrollBar().setSliderPosition(row)
except Exception as e:
print('滚轮定位过去: %s'% e)
# 让滚动条滚动到最底部
self.tableWidget.scrollToBottom() # 让滚动条滚动到最底部
self.tableWidget.scrollToTop()# 让滚动条滚动到最顶部