update 更新界面动作,修复放大缩小异常

This commit is contained in:
FrankCV2048
2024-10-23 23:02:45 +08:00
parent f071866b6d
commit 83a25c1080
5 changed files with 2437 additions and 848 deletions

182
main.py
View File

@ -6,6 +6,7 @@ import sys
from multiprocessing import Process
from PyQt5.uic.properties import QtWidgets
from PySide6 import QtCore
from PySide6.QtCore import QThread, Signal, Slot, QObject, QEvent
from PySide6.QtGui import QIntValidator, QStandardItemModel, QStandardItem, Qt, QMovie
from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QHeaderView, QTableWidget, \
@ -43,7 +44,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.init_robot_info()
self.init_FeedLine()
self.start_Runing()
self.init_log()
# self.init_log()
@ -142,9 +143,14 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.pushButton_get_p1.clicked.connect(self.get_p1_button_click)
self.pushButton_get_p2.clicked.connect(self.get_p2_button_click)
self.pushButton_get_p3.clicked.connect(self.get_p3_button_click)
self.pushButton_get_p4.clicked.connect(self.get_p4_button_click)
self.pushButton_get_p5.clicked.connect(self.get_p5_button_click)
self.pushButton_set_p1.clicked.connect(self.set_p1_button_click)
self.pushButton_set_p2.clicked.connect(self.set_p2_button_click)
self.pushButton_set_p3.clicked.connect(self.set_p3_button_click)
self.pushButton_set_p4.clicked.connect(self.set_p4_button_click)
self.pushButton_set_p5.clicked.connect(self.set_p5_button_click)
self.pushButton_clearAlarm.clicked.connect(self.send_clear_alarm_command)
self.pushButton_reset.clicked.connect(self.send_reset_button_click)
@ -216,17 +222,21 @@ class MainWindow(QMainWindow, Ui_MainWindow):
rows = len(self.feedLine_dict.keys()) + 1
self.tableWidget_feedSeting.setRowCount(rows)
self.tableWidget_feedSeting.setColumnCount(20)
self.tableWidget_feedSeting.setColumnCount(20+4*6)
# 设置第一重表头的合并 (三列一组)
self.tableWidget_feedSeting_addtional_col_num = 2
self.tableWidget_feedSeting.setSpan(0, 0 + self.tableWidget_feedSeting_addtional_col_num, 1, 6) # 合并前3列
self.tableWidget_feedSeting.setSpan(0, 6 + self.tableWidget_feedSeting_addtional_col_num, 1, 6) # 合并后3列
self.tableWidget_feedSeting.setSpan(0, 12 + self.tableWidget_feedSeting_addtional_col_num, 1, 6) # 合并后3列
self.tableWidget_feedSeting.setSpan(0, 18 + self.tableWidget_feedSeting_addtional_col_num, 1, 6) # 合并后3列
self.tableWidget_feedSeting.setSpan(0, 24 + self.tableWidget_feedSeting_addtional_col_num, 1, 6) # 合并后3列
self.tableWidget_feedSeting.setSpan(0, 30 + self.tableWidget_feedSeting_addtional_col_num, 1, 6)
self.tableWidget_feedSeting.setSpan(0, 36 + self.tableWidget_feedSeting_addtional_col_num, 1, 6)
self.tableWidget_feedSeting.itemChanged.connect(self.send_tabelFeedSet_itemChanged)
btn_safe = QPushButton("获取安全位置")
widget_safe = QWidget()
layout_safe = QHBoxLayout()
layout_safe.addWidget(btn_safe)
@ -253,9 +263,53 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# 将布局设置到 QWidget 容器中
widget_feed.setLayout(layout_feed)
btn_bk1 = QPushButton("获取破袋位置1")
widget_bk1 = QWidget()
layout_bk1 = QHBoxLayout()
layout_bk1.addWidget(btn_bk1)
# 调整布局的间距,使之更紧凑
layout_bk1.setContentsMargins(0, 0, 0, 0)
# 将布局设置到 QWidget 容器中
widget_bk1.setLayout(layout_bk1)
btn_bk2 = QPushButton("获取破袋位置2")
widget_bk2 = QWidget()
layout_bk2 = QHBoxLayout()
layout_bk2.addWidget(btn_bk2)
# 调整布局的间距,使之更紧凑
layout_bk2.setContentsMargins(0, 0, 0, 0)
# 将布局设置到 QWidget 容器中
widget_bk2.setLayout(layout_bk2)
btn_dropbag = QPushButton("获取丢袋位置")
widget_dropbag = QWidget()
layout_dropbag = QHBoxLayout()
layout_dropbag.addWidget(btn_dropbag)
# 调整布局的间距,使之更紧凑
layout_dropbag.setContentsMargins(0, 0, 0, 0)
# 将布局设置到 QWidget 容器中
widget_dropbag.setLayout(layout_dropbag)
btn_zipbag = QPushButton("获取压袋位置")
btn_zipbag = QPushButton("获取压袋位置")
widget_zipbag = QWidget()
layout_zipbag = QHBoxLayout()
layout_zipbag.addWidget(btn_zipbag)
# 调整布局的间距,使之更紧凑
layout_zipbag.setContentsMargins(0, 0, 0, 0)
# 将布局
widget_zipbag.setLayout(layout_zipbag)
btn_safe.clicked.connect(self.send_get_safe_position_button_click)
btn_photo.clicked.connect(self.send_get_photo_position_button_click)
btn_feed.clicked.connect(self.send_get_feed_position_button_click)
btn_bk1.clicked.connect(self.send_get_broken1_position_button_click)
btn_bk2.clicked.connect(self.send_get_broken2_position_button_click)
btn_dropbag.clicked.connect(self.send_get_dropbag_position_button_click)
btn_zipbag.clicked.connect(self.send_get_zipbag_position_button_click)
# 添加第一重表头项
self.tableWidget_feedSeting.setCellWidget(0, 0 + self.tableWidget_feedSeting_addtional_col_num, widget_safe)
@ -263,12 +317,17 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.tableWidget_feedSeting.setCellWidget(0, 12 + self.tableWidget_feedSeting_addtional_col_num,
widget_feed) # 设置在合并的第2组
self.tableWidget_feedSeting.setCellWidget(0, 18 + self.tableWidget_feedSeting_addtional_col_num, widget_bk1)
self.tableWidget_feedSeting.setCellWidget(0, 24 + self.tableWidget_feedSeting_addtional_col_num, widget_bk2)
self.tableWidget_feedSeting.setCellWidget(0, 30 + self.tableWidget_feedSeting_addtional_col_num, widget_dropbag)
self.tableWidget_feedSeting.setCellWidget(0, 36 + self.tableWidget_feedSeting_addtional_col_num, widget_zipbag)
self.tableWidget_feedSeting.setSelectionBehavior(QTableWidget.SelectRows)
self.tableWidget_feedSeting.setAutoScroll(True)
# 添加第二重表头
self.tableWidget_feedSeting.setHorizontalHeaderLabels(
['header', '线名', 'X1', 'Y1', 'Z1', 'U1', 'V1', 'W1', 'X2', 'Y2', 'Z2', 'U2', 'V2', 'W2', 'X3', 'Y3', 'Z3',
'U3', 'V3', 'W3'])
'U3', 'V3', 'W3', 'X4', 'Y4', 'Z4', 'U4', 'V4', 'W4', 'X5', 'Y5', 'Z5', 'U5', 'V5', 'W5', 'X6', 'Y6', 'Z6', 'U6', 'V6', 'W6','X7', 'Y7', 'Z7', 'U7', 'V7', 'W7'])
self.tableWidget_feedSeting.hideColumn(0)
# 填充数据行
@ -278,6 +337,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.set_position_to_tabel(row + 1, 0, feed_line.safe_position)
self.set_position_to_tabel(row + 1, 1, feed_line.photo_position)
self.set_position_to_tabel(row + 1, 2, feed_line.feed_position)
self.set_position_to_tabel(row + 1, 3, feed_line.broken1_position)
self.set_position_to_tabel(row + 1, 4, feed_line.broken2_position)
self.set_position_to_tabel(row + 1, 5, feed_line.drop_bag_position)
self.set_position_to_tabel(row + 1, 6, feed_line.zip_bag_position)
# 禁用自动表头
self.tableWidget_feedSeting.verticalHeader().setVisible(True)
@ -568,6 +632,37 @@ class MainWindow(QMainWindow, Ui_MainWindow):
real_position.U, real_position.V, real_position.W)
self.set_position_to_tabel(row_i, 2, real_position)
def send_get_broken1_position_button_click(self):
real_position = self.robotClient.status_model.getRealPosition()
row_i = self.tableWidget_feedSeting.currentRow()
head = self.tableWidget_feedSeting.item(row_i, 0).text()
self.feedLine_dict[head].broken1_position.init_position(real_position.X, real_position.Y, real_position.Z,
real_position.U, real_position.V, real_position.W)
self.set_position_to_tabel(row_i, 3, real_position)
def send_get_broken2_position_button_click(self):
real_position = self.robotClient.status_model.getRealPosition()
row_i = self.tableWidget_feedSeting.currentRow()
head = self.tableWidget_feedSeting.item(row_i, 0).text()
self.feedLine_dict[head].broken2_position.init_position(real_position.X, real_position.Y, real_position.Z,
real_position.U, real_position.V, real_position.W)
self.set_position_to_tabel(row_i, 4, real_position)
def send_get_dropbag_position_button_click(self):
real_position = self.robotClient.status_model.getRealPosition()
row_i = self.tableWidget_feedSeting.currentRow()
head = self.tableWidget_feedSeting.item(row_i, 0).text()
self.feedLine_dict[head].drop_bag_position.init_position(real_position.X, real_position.Y, real_position.Z,
real_position.U, real_position.V, real_position.W)
self.set_position_to_tabel(row_i, 5, real_position)
def send_get_zipbag_position_button_click(self):
real_position = self.robotClient.status_model.getRealPosition()
row_i = self.tableWidget_feedSeting.currentRow()
head = self.tableWidget_feedSeting.item(row_i, 0).text()
self.feedLine_dict[head].zip_bag_position.init_position(real_position.X, real_position.Y, real_position.Z,
real_position.U, real_position.V, real_position.W)
self.set_position_to_tabel(row_i, 6, real_position)
def send_tabelFeedSet_addRow(self):
for i in range(1, 20):
head = f'{Constant.feedLine_set_section}{i}'
@ -733,8 +828,10 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def updateUI_label_detection(self):
backgroud_img = Util.util_pic.cv2_to_qpixmap(self.feeding.detection_image)
backgroud_img = backgroud_img.scaled(self.label_showDetection.size().width(),self.label_showDetection.size().height(), Qt.AspectRatioMode.IgnoreAspectRatio,Qt.TransformationMode.SmoothTransformation)
self.label_showDetection.setPixmap(backgroud_img)
def updateUI_Select_Line(self):
self.comboBox_lineIndex.clear()
for key, value in self.feedLine_dict.items():
@ -968,16 +1065,36 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.lineEdit_y3.setText(realPosition.Y)
self.lineEdit_z3.setText(realPosition.Z)
def get_p4_button_click(self):
realPosition = self.robotClient.status_model.getRealPosition()
self.lineEdit_x4.setText(realPosition.X)
self.lineEdit_y4.setText(realPosition.Y)
self.lineEdit_z4.setText(realPosition.Z)
def get_p5_button_click(self):
realPosition = self.robotClient.status_model.getRealPosition()
self.lineEdit_x5.setText(realPosition.X)
self.lineEdit_y5.setText(realPosition.Y)
self.lineEdit_z5.setText(realPosition.Z)
def set_p1_button_click(self):
try:
x1 = float(self.lineEdit_x1.text())
y1 = float(self.lineEdit_y1.text())
z1 = float(self.lineEdit_z1.text())
self.robotClient.photo_locs[0] = (x1, y1, z1)
u1 = float(self.lineEdit_u1.text())
v1 = float(self.lineEdit_v1.text())
w1 = float(self.lineEdit_w1.text())
self.robotClient.photo_locs[0] = (x1, y1, z1,u1,v1,w1)
self.configReader.read(Constant.set_ini)
self.configReader.set('Robot_Feed', 'photo_x1', str(x1))
self.configReader.set('Robot_Feed', 'photo_y1', str(y1))
self.configReader.set('Robot_Feed', 'photo_z1', str(z1))
self.configReader.set('Robot_Feed', 'photo_u1', str(u1))
self.configReader.set('Robot_Feed', 'photo_v1', str(v1))
self.configReader.set('Robot_Feed', 'photo_w1', str(w1))
log.log_message(logging.INFO, f'设置拍照点1:{x1},{y1},{z1}')
except:
self.show_infomessage_box("设置拍照点1失败")
@ -987,11 +1104,17 @@ class MainWindow(QMainWindow, Ui_MainWindow):
x2 = float(self.lineEdit_x2.text())
y2 = float(self.lineEdit_y2.text())
z2 = float(self.lineEdit_z2.text())
self.robotClient.photo_locs[1] = (x2, y2, z2)
u2 = float(self.lineEdit_u2.text())
v2 = float(self.lineEdit_v2.text())
w2 = float(self.lineEdit_w2.text())
self.robotClient.photo_locs[1] = (x2, y2, z2,u2,v2,w2)
self.configReader.read(Constant.set_ini)
self.configReader.set('Robot_Feed', 'photo_x2', str(x2))
self.configReader.set('Robot_Feed', 'photo_y2', str(y2))
self.configReader.set('Robot_Feed', 'photo_z2', str(z2))
self.configReader.set('Robot_Feed', 'photo_u2', str(u2))
self.configReader.set('Robot_Feed', 'photo_v2', str(v2))
self.configReader.set('Robot_Feed', 'photo_w2', str(w2))
log.log_message(logging.INFO, f'设置拍照点2:{x2},{y2},{z2}')
except:
self.show_infomessage_box("设置拍照点2失败")
@ -1002,15 +1125,60 @@ class MainWindow(QMainWindow, Ui_MainWindow):
x3 = float(self.lineEdit_x3.text())
y3 = float(self.lineEdit_y3.text())
z3 = float(self.lineEdit_z3.text())
self.robotClient.photo_locs[2] = (x3, y3, z3)
u3 = float(self.lineEdit_u3.text())
v3 = float(self.lineEdit_v3.text())
w3 = float(self.lineEdit_w3.text())
self.robotClient.photo_locs[2] = (x3, y3, z3,u3,v3,w3)
self.configReader.read(Constant.set_ini)
self.configReader.set('Robot_Feed', 'photo_x3', str(x3))
self.configReader.set('Robot_Feed', 'photo_y3', str(y3))
self.configReader.set('Robot_Feed', 'photo_z3', str(z3))
self.configReader.set('Robot_Feed', 'photo_u3', str(u3))
self.configReader.set('Robot_Feed', 'photo_v3', str(v3))
self.configReader.set('Robot_Feed', 'photo_w3', str(w3))
log.log_message(logging.INFO, f'设置拍照点3:{x3},{y3},{z3}')
except:
self.show_infomessage_box("设置拍照点3失败")
def set_p4_button_click(self):
try:
x4 = float(self.lineEdit_x4.text())
y4 = float(self.lineEdit_y4.text())
z4 = float(self.lineEdit_z4.text())
u4 = float(self.lineEdit_u4.text())
v4 = float(self.lineEdit_v4.text())
w4 = float(self.lineEdit_w4.text())
self.robotClient.photo_locs[3] = (x4, y4, z4,u4,v4,w4)
self.configReader.read(Constant.set_ini)
self.configReader.set('Robot_Feed', 'photo_x4', str(x4))
self.configReader.set('Robot_Feed', 'photo_y4', str(y4))
self.configReader.set('Robot_Feed', 'photo_z4', str(z4))
self.configReader.set('Robot_Feed', 'photo_u4', str(u4))
self.configReader.set('Robot_Feed', 'photo_v4', str(v4))
self.configReader.set('Robot_Feed', 'photo_w4', str(w4))
log.log_message(logging.INFO, f'设置拍照点4:{x4},{y4},{z4}')
except:
self.show_infomessage_box("设置拍照点4失败")
def set_p5_button_click(self):
try:
x5 = float(self.lineEdit_x5.text())
y5 = float(self.lineEdit_y5.text())
z5 = float(self.lineEdit_z5.text())
u5 = float(self.lineEdit_u5.text())
v5 = float(self.lineEdit_v5.text())
w5 = float(self.lineEdit_w5.text())
self.robotClient.photo_locs[4] = (x5, y5, z5,u5,v5,w5)
self.configReader.read(Constant.set_ini)
self.configReader.set('Robot_Feed', 'photo_x5', str(x5))
self.configReader.set('Robot_Feed', 'photo_y5', str(y5))
self.configReader.set('Robot_Feed', 'photo_z5', str(z5))
self.configReader.set('Robot_Feed', 'photo_u5', str(u5))
self.configReader.set('Robot_Feed', 'photo_v5', str(v5))
self.configReader.set('Robot_Feed', 'photo_w5', str(w5))
log.log_message(logging.INFO, f'设置拍照点5:{x5},{y5},{z5}')
except:
self.show_infomessage_box("设置拍照点5失败")
def updateUI_Photo_Set(self):
self.lineEdit_x1.setText(str(self.robotClient.photo_locs[0][0]))