ui 分离

This commit is contained in:
Fiber 2024-10-15 11:07:59 +08:00
parent 498ec03348
commit 0c373550d1

View File

@ -15,39 +15,30 @@ from PySide6.QtWidgets import (QApplication, QFileDialog,QGraphicsView, QMainWin
QMenuBar, QPushButton, QSizePolicy, QStatusBar, QGraphicsScene, QComboBox, QMenuBar, QPushButton, QSizePolicy, QStatusBar, QGraphicsScene, QComboBox,
QTextBrowser, QWidget) QTextBrowser, QWidget)
# ui设计部分
class Ui_MainWindow(object): class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
if not MainWindow.objectName(): if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow") MainWindow.setObjectName(u"MainWindow")
self.resize(1173, 750)
self.centralwidget = QWidget(MainWindow) self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget") self.centralwidget.setObjectName(u"centralwidget")
self.pushButton = QPushButton(self.centralwidget) self.pushButton = QPushButton(self.centralwidget)
self.pushButton.setObjectName(u"pushButton") self.pushButton.setObjectName(u"pushButton")
self.pushButton.setGeometry(QRect(880, 400, 141, 81))
self.pushButton_2 = QPushButton(self.centralwidget) self.pushButton_2 = QPushButton(self.centralwidget)
self.pushButton_2.setObjectName(u"pushButton_2") self.pushButton_2.setObjectName(u"pushButton_2")
self.pushButton_2.setGeometry(QRect(1020, 400, 141, 81))
self.graphicsView = QGraphicsView(self.centralwidget) self.graphicsView = QGraphicsView(self.centralwidget)
self.graphicsView.setObjectName(u"graphicsView") self.graphicsView.setObjectName(u"graphicsView")
self.graphicsView.setGeometry(QRect(0, 0, 871, 700))
self.textBrowser = QTextBrowser(self.centralwidget) self.textBrowser = QTextBrowser(self.centralwidget)
self.textBrowser.setObjectName(u"textBrowser") self.textBrowser.setObjectName(u"textBrowser")
self.textBrowser.setGeometry(QRect(880, 80, 281, 291))
self.pushButton_3 = QPushButton(self.centralwidget) self.pushButton_3 = QPushButton(self.centralwidget)
self.pushButton_3.setObjectName(u"pushButton_3") self.pushButton_3.setObjectName(u"pushButton_3")
self.pushButton_3.setGeometry(QRect(880, 560, 141, 81))
self.pushButton_4 = QPushButton(self.centralwidget) self.pushButton_4 = QPushButton(self.centralwidget)
self.pushButton_4.setObjectName(u"pushButton_4") self.pushButton_4.setObjectName(u"pushButton_4")
self.pushButton_4.setGeometry(QRect(1020, 560, 141, 81))
self.comboBox = QComboBox(self.centralwidget) self.comboBox = QComboBox(self.centralwidget)
self.comboBox.setObjectName(u"comboBox") self.comboBox.setObjectName(u"comboBox")
self.comboBox.setGeometry(QRect(1020, 530, 141, 31))
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow) self.menubar = QMenuBar(MainWindow)
self.menubar.setObjectName(u"menubar") self.menubar.setObjectName(u"menubar")
self.menubar.setGeometry(QRect(0, 0, 1173, 33))
self.menu = QMenu(self.menubar) self.menu = QMenu(self.menubar)
self.menu.setObjectName(u"menu") self.menu.setObjectName(u"menu")
self.menu_2 = QMenu(self.menubar) self.menu_2 = QMenu(self.menubar)
@ -56,6 +47,7 @@ class Ui_MainWindow(object):
self.statusbar = QStatusBar(MainWindow) self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar") self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar) MainWindow.setStatusBar(self.statusbar)
self.set_size()
self.menubar.addAction(self.menu.menuAction()) self.menubar.addAction(self.menu.menuAction())
self.menubar.addAction(self.menu_2.menuAction()) self.menubar.addAction(self.menu_2.menuAction())
@ -63,7 +55,20 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow) QMetaObject.connectSlotsByName(MainWindow)
# setupUi # 自适应界面大小
def set_size(self, w=800, h=600):
w = w+10
h = h+10
w_button = 110
self.resize(w+250, h+100)
self.pushButton.setGeometry(QRect(w+10, 400, w_button, 40))
self.pushButton_2.setGeometry(QRect(w+10+w_button+10, 400, w_button, 40))
self.graphicsView.setGeometry(QRect(0, 0, w, h))
self.textBrowser.setGeometry(QRect(w+10, 30, w_button*2+10, 350))
self.pushButton_3.setGeometry(QRect(w+10, 560, w_button, 40))
self.pushButton_4.setGeometry(QRect(w+10+w_button+10, 560, w_button, 40))
self.comboBox.setGeometry(QRect(w+10+w_button+10, 530, w_button, 30))
self.menubar.setGeometry(QRect(0, 0, w+230, h+100))
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None)) MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
@ -71,11 +76,11 @@ class Ui_MainWindow(object):
self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Right", None)) self.pushButton_2.setText(QCoreApplication.translate("MainWindow", u"Right", None))
self.pushButton_3.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u89c6\u9891", None)) self.pushButton_3.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u89c6\u9891", None))
self.pushButton_4.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u6807\u7b7e", None)) self.pushButton_4.setText(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u6807\u7b7e", None))
self.menu.setTitle(QCoreApplication.translate("MainWindow", u"\u8f7d\u5165\u6570\u636e", None)) self.menu.setTitle(QCoreApplication.translate("MainWindow", u"menu1", None))
self.menu_2.setTitle(QCoreApplication.translate("MainWindow", u"\u6807\u7b7e\u68c0\u67e5", None)) self.menu_2.setTitle(QCoreApplication.translate("MainWindow", u"menu2", None))
# retranslateUi # retranslateUi
# ui逻辑控制
class MainWindow(QMainWindow, Ui_MainWindow): class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self): def __init__(self):
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
@ -93,45 +98,47 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.graphicsView.show() self.graphicsView.show()
self.now = 2400 self.now = 2400
self.is_video_set = 0
self.is_label_set = 0
def show_frame(self): def show_video(self):
if not self.is_video_set or not self.is_label_set: img = self.video.read(self.now) # 读入opencv视频流
return
frame_num, method_raw = self.mark.read(self.now)
img = self.video.read(frame_num)
cvimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 把opencv 默认BGR转为通用的RGB
y, x = img.shape[:-1] y, x = img.shape[:-1]
#视频帧如果过大需要在此进行缩放,如
max_width = 1500
if x > max_width:
mult = max_width/x
img = cv2.resize(img, (0, 0), fx=mult, fy=mult, interpolation=cv2.INTER_NEAREST)
y, x = img.shape[:-1]
self.set_size(x, y)
cvimg = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 把opencv 默认BGR转为通用的RGB
frame = QImage(cvimg, x, y, QImage.Format_RGB888) frame = QImage(cvimg, x, y, QImage.Format_RGB888)
self.scene.clear() #先清空上次的残留 self.scene.clear() #先清空上次的残留
self.pix = QPixmap.fromImage(frame) self.pix = QPixmap.fromImage(frame)
self.scene.addPixmap(self.pix) self.scene.addPixmap(self.pix)
text = "帧数:"+"{:06d}".format(frame_num)+"\n"+"{:02d}".format(int(frame_num/30/60%60)) \ def show_text(self):
+":"+"{:02d}".format(int(frame_num/30))+"\n操作:" text = "显示的文字"
method = self.mark.get_method(method_raw)
for i in method:
text += "\n" + i
self.textBrowser.setText(text) self.textBrowser.setText(text)
self.textBrowser.show() self.textBrowser.show()
def left_frame(self): def left_frame(self):
if self.now > 0: if self.now > 0:
self.now -= 1 self.now -= 1
self.show_frame() self.show_video()
self.show_text()
def right_frame(self): def right_frame(self):
if self.now < self.max_mark - 1: if self.now < 1000 - 1:
self.now += 1 self.now += 1
self.show_frame() self.show_video()
self.show_text()
def load_video(self): def load_video(self):
fname ,_ = QFileDialog.getOpenFileName(self, 'Open Video', '../', 'Video files (*.mp4 *.avi *.mp4 *.m4v *.mkv *.mkv)') fname ,_ = QFileDialog.getOpenFileName(self, 'Open Video', '../', 'Video files (*.mp4 *.avi *.mp4 *.m4v *.mkv *.mkv)')
self.video = Video(fname) self.video = Video(fname)
self.is_video_set = 1 self.show_video()
self.show_frame()
def load_mark(self): def load_mark(self):
@ -142,13 +149,12 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.comboBox.clear() self.comboBox.clear()
self.comboBox.addItems(self.mark.sheet_list()) self.comboBox.addItems(self.mark.sheet_list())
self.is_label_set = 1 self.show_text()
self.show_frame()
def name_reset(self): def name_reset(self):
name = self.comboBox.currentText() name = self.comboBox.currentText()
self.mark.change_name(name) self.mark.change_name(name)
self.show_frame() self.show_text()