[centralwidget] new task card widget

This commit is contained in:
Jan Grewe 2025-01-31 17:23:53 +01:00
parent 320a47976a
commit 778b929fe7

View File

@ -1,14 +1,49 @@
import logging import logging
from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton from PySide6.QtWidgets import QWidget, QStackedLayout, QSizePolicy, QHBoxLayout, QPushButton, QLabel, QVBoxLayout, QGridLayout
from PySide6.QtCore import Qt, QSize from PySide6.QtCore import Qt, QSize
from PySide6.QtGui import QIcon from PySide6.QtGui import QIcon, QFont, QImage, QPixmap
from fixtracks.widgets.tracks import FixTracks from fixtracks.widgets.tracks import FixTracks
from fixtracks.widgets.detectionmerge import MergeDetections from fixtracks.widgets.detectionmerge import MergeDetections
from fixtracks.widgets.taskwidget import TasksWidget, Task from fixtracks.widgets.taskwidget import TasksWidget, Task
from fixtracks.widgets.converter import Json2PandasConverter from fixtracks.widgets.converter import Json2PandasConverter
class TaskCard(QWidget):
def __init__(self, name, icon, description, taks, parent=None):
super().__init__(parent)
self.setMaximumSize(300, 150)
# self.setStyleSheet("background-color: gray;")
font = QFont()
font.setBold(True)
font.setPointSize(14)
name_label = QLabel(name)
name_label.setFont(font)
description_label = QLabel(description)
description_label.setLineWidth(100)
icon_label = QLabel()
icon_label.setFixedSize(128, 128)
pixmap = QPixmap.fromImage(QImage(icon))
scaled_pixmap = pixmap.scaled(icon_label.size(), Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)
icon_label.setPixmap(scaled_pixmap)
hbox = QHBoxLayout()
hbox.addWidget(icon_label)
hbox.addWidget(description_label)
lyt = QVBoxLayout()
lyt.addWidget(name_label)
lyt.addLayout(hbox)
self.setLayout(lyt)
# trackBtn.clicked.connect(lambda: self._select_task(track))
class CentralWidget(QWidget): class CentralWidget(QWidget):
def __init__(self, darkmode, parent=None): def __init__(self, darkmode, parent=None):
@ -28,11 +63,12 @@ class CentralWidget(QWidget):
self._trackwidget = FixTracks(self) self._trackwidget = FixTracks(self)
self._trackwidget.back.connect(self._on_back) self._trackwidget.back.connect(self._on_back)
convert = Task.CONVERT # convert = Task.CONVERT
convertBtn = QPushButton(QIcon(":/icons/convert_light"), Task.CONVERT.value) # convertBtn = QPushButton(QIcon(":/icons/convert_light"), Task.CONVERT.value)
convertBtn.setToolTip("Convert JSON pose files to to Pandas data frames") # convertBtn.setToolTip("Convert JSON pose files to to Pandas data frames")
convertBtn.setIconSize(QSize(128, 128)) # convertBtn.setIconSize(QSize(128, 128))
convertBtn.clicked.connect(lambda: self._select_task(convert)) # convertBtn.clicked.connect(lambda: self._select_task(convert))
convert_task = TaskCard(Task.CONVERT.value, ":/icons/convert_light", "Convert JSON pose files to to Pandas data frames", Task.CONVERT)
merge = Task.MERGE merge = Task.MERGE
mergeBtn = QPushButton(QIcon(":/icons/merge_light"), Task.MERGE.value) mergeBtn = QPushButton(QIcon(":/icons/merge_light"), Task.MERGE.value)
@ -45,14 +81,13 @@ class CentralWidget(QWidget):
trackBtn.setToolTip("Fix tracking of individuals, reassign track ids.") trackBtn.setToolTip("Fix tracking of individuals, reassign track ids.")
trackBtn.setIconSize(QSize(128, 128)) trackBtn.setIconSize(QSize(128, 128))
trackBtn.clicked.connect(lambda: self._select_task(track)) trackBtn.clicked.connect(lambda: self._select_task(track))
grid = QGridLayout()
btnlyt = QHBoxLayout() grid.addWidget(convert_task, 0, 0, alignment=Qt.AlignmentFlag.AlignCenter)
btnlyt.addWidget(convertBtn, alignment=Qt.AlignmentFlag.AlignCenter) grid.addWidget(mergeBtn, 1, 0, alignment=Qt.AlignmentFlag.AlignCenter)
btnlyt.addWidget(mergeBtn, alignment=Qt.AlignmentFlag.AlignCenter) grid.addWidget(trackBtn, 2, 0, alignment=Qt.AlignmentFlag.AlignCenter)
btnlyt.addWidget(trackBtn, alignment=Qt.AlignmentFlag.AlignCenter)
taskgrid = QWidget() taskgrid = QWidget()
taskgrid.setMaximumWidth(1000) taskgrid.setMaximumWidth(1000)
taskgrid.setLayout(btnlyt) taskgrid.setLayout(grid)
layout = QStackedLayout() layout = QStackedLayout()
layout.setAlignment(Qt.AlignmentFlag.AlignCenter) layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
@ -98,3 +133,17 @@ class CentralWidget(QWidget):
# # @Slot(None) # # @Slot(None)
# def on_new(self): # def on_new(self):
# self._view.setScene(self._gamescene) # self._view.setScene(self._gamescene)
def main():
from PySide6.QtWidgets import QApplication
app = QApplication([])
window = QWidget()
taskcard = TaskCard("test", "../icons/merge_light.png", "do something with manyt words, too many to fit in one line", Task.CONVERT)
layout = QVBoxLayout()
layout.addWidget(taskcard)
window.setLayout(layout)
window.show()
app.exec()
if __name__ == "__main__":
main()