def get_combobox(Items=None, ItemIndex=0, ItemHeight=15, widget_name='MyChoice', Left=0, Height=100, Top=0, Width=200, TopMargin=10, RightMargin=10, BottomMargin=10, LeftMargin=10, has_OnClick=False, has_OnSelect=True): return ComboBox(**key_word_args(COMBOBOX_PARAML, locals()))
def __init__(self, defaultFilename=None, defaaultPrefdefClassFile=None, defaultSaveDir=None): super(MainWindow, self).__init__() self.setWindowTitle(__appname__) #Load setting in the main thread self.settings = Settings() self.settings.load() settings = self.settings #load string bundle for i18n self.stringBundle = StringBundle.getBundle() getStr = lambda strId: self.stringBundle.getString(strId) #save as pascal voc xml self.defaultSaveDir = defaultSaveDir self.labelFileFormat = settings.get(SETTING_LABEL_FILE_FORMAT, LabelFileFormat.PASCAL_VOC) #for loading all image under a directory self.mImgList = [] self.dirname = None self.labelHist = [] self.lastOpenDir = None #NEED TO DO #whether we need to save or not self.dirty = False self._noSelectionSlot = False self._beginner = True self.screencastViewer = self.getAvailableScreencastViewer() self.screencast = "https://youtu.be/p0nR2YsCY_U" #Load predefined classes to the list self.loadPredefinedClasses(defaaultPrefdefClassFile) #main widgets and related state self.labelDialog = LabelDialog(parent=self, listItem=self.labelHist) self.itemsToShapes = {} self.shapesToItems = {} self.prevLabelText = '' listLayout = QVBoxLayout() listLayout.setContentsMargins(0,0,0,0) self.useDefaultLableCheckbox = QCheckBox(getStr('useDefaultLabel')) self.useDefaultLableCheckbox.setChecked(False) self.defaultLabelTextLine = QLineEdit() useDefaultLabelQHBoxLayout = QHBoxLayout() useDefaultLabelQHBoxLayout.addWidget(self.useDefaultLableCheckbox) useDefaultLabelQHBoxLayout.addWidget(self.defaultLabelTextLine) useDefaultLabelContainer = QWidget() useDefaultLabelContainer.setLayout((useDefaultLabelQHBoxLayout)) self.diffcButton = QCheckBox(getStr('useDifficult')) self.diffcButton.setChecked(False) self.diffcButton.stateChanged.connect(self.btnstate) self.editButton = QToolButton() self.editButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) listLayout.addWidget(self.editButton) listLayout.addWidget(self.diffcButton) listLayout.addWidget(useDefaultLabelContainer) self.comboBox = ComboBox(self) listLayout.addWidget(self.comboBox) # Create and add a widget for showing current label items self.labelList = QListWidget() labelListContainer = QWidget() labelListContainer.setLayout(listLayout) self.labelList.itemActivated.connect(self.labelSelectionChanged) self.labelList.itemSelectionChanged.connect(self.labelSelectionChanged) self.labelList.itemDoubleClicked.connect(self.editLabel) # Connect to itemChanged to detect checkbox changes. self.labelList.itemChanged.connect(self.labelItemChanged) listLayout.addWidget(self.labelList) self.dock = QDockWidget(getStr('boxLabelText'), self) self.dock.setObjectName(getStr('labels')) self.dock.setWidget(labelListContainer) self.fileListWidget = QListWidget() self.fileListWidget.itemDoubleClicked.connect(self.fileitemDoubleClicked) filelistLayout = QVBoxLayout() filelistLayout.setContentsMargins(0, 0, 0, 0) filelistLayout.addWidget(self.fileListWidget) fileListContainer = QWidget() fileListContainer.setLayout(filelistLayout) self.filedock = QDockWidget(getStr('fileList'), self) self.filedock.setObjectName(getStr('files')) self.filedock.setWidget(fileListContainer) self.zoomWidget = ZoomWidget() self.colorDialog = ColorDialog(parent=self) self.canvas = Canvas(parent=self) self.canvas.zoomRequest.connect(self.zoomRequest) self.canvas.setDrawingShapeToSquare(settings.get(SETTING_DRAW_SQUARE, False)) scroll = QScrollArea() scroll.setWidget(self.canvas) scroll.setWidgetResizable(True) self.scrollBars = { Qt.Vertical: scroll.verticalScrollBar(), Qt.Horizontal: scroll.horizontalScrollBar() } self.scrollArea = scroll self.canvas.scrollRequest.connect(self.scrollRequest) self.canvas.newShape.connect(self.newShape) self.canvas.shapeMoved.connect(self.setDirty) self.canvas.selectionChanged.connect(self.shapeSelectionChanged) self.canvas.drawingPolygon.connect(self.toggleDrawingSensitive) self.setCentralWidget(scroll) self.addDockWidget(Qt.RightDockWidgetArea, self.dock) self.addDockWidget(Qt.RightDockWidgetArea, self.filedock) self.filedock.setFeatures(QDockWidget.DockWidgetFloatable) self.dockFeatures = QDockWidget.DockWidgetClosable | QDockWidget.DockWidgetFloatable self.dock.setFeatures(self.dock.features() ^ self.dockFeatures)
def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) MainWindow.setMinimumSize(QtCore.QSize(800, 600)) MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget) self.horizontalLayout.setObjectName("horizontalLayout") self.frame = QtWidgets.QFrame(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.frame.sizePolicy().hasHeightForWidth()) self.frame.setSizePolicy(sizePolicy) self.frame.setObjectName("frame") self.verticalLayout = QtWidgets.QVBoxLayout(self.frame) self.verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetNoConstraint) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.widget = QtWidgets.QWidget(self.frame) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(3) sizePolicy.setHeightForWidth(self.widget.sizePolicy().hasHeightForWidth()) self.widget.setSizePolicy(sizePolicy) self.widget.setObjectName("widget") self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget) self.verticalLayout_2.setContentsMargins(2, 2, 2, 2) self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalWidget = QtWidgets.QWidget(self.widget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(2) sizePolicy.setHeightForWidth(self.horizontalWidget.sizePolicy().hasHeightForWidth()) self.horizontalWidget.setSizePolicy(sizePolicy) self.horizontalWidget.setObjectName("horizontalWidget") self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalWidget) self.horizontalLayout_4.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) self.horizontalLayout_4.setContentsMargins(2, 2, 2, 2) self.horizontalLayout_4.setSpacing(16) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.cmb_port = ComboBox(self.horizontalWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(2) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.cmb_port.sizePolicy().hasHeightForWidth()) self.cmb_port.setSizePolicy(sizePolicy) self.cmb_port.setObjectName("cmb_port") self.horizontalLayout_4.addWidget(self.cmb_port) self.btn_open_close_port = QtWidgets.QPushButton(self.horizontalWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_open_close_port.sizePolicy().hasHeightForWidth()) self.btn_open_close_port.setSizePolicy(sizePolicy) self.btn_open_close_port.setObjectName("btn_open_close_port") self.horizontalLayout_4.addWidget(self.btn_open_close_port) self.verticalLayout_2.addWidget(self.horizontalWidget) self.line_2 = QtWidgets.QFrame(self.widget) self.line_2.setFrameShape(QtWidgets.QFrame.HLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.verticalLayout_2.addWidget(self.line_2) self.label_connect_info = QtWidgets.QLabel(self.widget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(4) sizePolicy.setHeightForWidth(self.label_connect_info.sizePolicy().hasHeightForWidth()) self.label_connect_info.setSizePolicy(sizePolicy) font = QtGui.QFont() font.setPointSize(10) self.label_connect_info.setFont(font) self.label_connect_info.setFrameShape(QtWidgets.QFrame.Box) self.label_connect_info.setFrameShadow(QtWidgets.QFrame.Raised) self.label_connect_info.setObjectName("label_connect_info") self.verticalLayout_2.addWidget(self.label_connect_info) self.verticalLayout.addWidget(self.widget) self.line_3 = QtWidgets.QFrame(self.frame) self.line_3.setFrameShape(QtWidgets.QFrame.HLine) self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_3.setObjectName("line_3") self.verticalLayout.addWidget(self.line_3) self.widget_2 = QtWidgets.QWidget(self.frame) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.widget_2.sizePolicy().hasHeightForWidth()) self.widget_2.setSizePolicy(sizePolicy) self.widget_2.setObjectName("widget_2") self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.widget_2) self.horizontalLayout_5.setContentsMargins(2, 2, 2, 2) self.horizontalLayout_5.setSpacing(2) self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.widget_3 = QtWidgets.QWidget(self.widget_2) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(10) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.widget_3.sizePolicy().hasHeightForWidth()) self.widget_3.setSizePolicy(sizePolicy) self.widget_3.setObjectName("widget_3") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget_3) self.verticalLayout_3.setContentsMargins(2, 2, 2, 2) self.verticalLayout_3.setObjectName("verticalLayout_3") self.widget_4 = QtWidgets.QWidget(self.widget_3) self.widget_4.setObjectName("widget_4") self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget_4) self.horizontalLayout_2.setContentsMargins(2, 2, 2, 2) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label_3 = QtWidgets.QLabel(self.widget_4) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth()) self.label_3.setSizePolicy(sizePolicy) self.label_3.setObjectName("label_3") self.horizontalLayout_2.addWidget(self.label_3) self.le_file_path = QtWidgets.QLineEdit(self.widget_4) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(3) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.le_file_path.sizePolicy().hasHeightForWidth()) self.le_file_path.setSizePolicy(sizePolicy) self.le_file_path.setMinimumSize(QtCore.QSize(100, 0)) self.le_file_path.setFocusPolicy(QtCore.Qt.NoFocus) self.le_file_path.setFrame(True) self.le_file_path.setDragEnabled(True) self.le_file_path.setReadOnly(True) self.le_file_path.setClearButtonEnabled(False) self.le_file_path.setObjectName("le_file_path") self.horizontalLayout_2.addWidget(self.le_file_path) self.btn_select_file = QtWidgets.QPushButton(self.widget_4) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_select_file.sizePolicy().hasHeightForWidth()) self.btn_select_file.setSizePolicy(sizePolicy) self.btn_select_file.setObjectName("btn_select_file") self.horizontalLayout_2.addWidget(self.btn_select_file) self.verticalLayout_3.addWidget(self.widget_4) self.horizontalLayout_5.addWidget(self.widget_3) self.verticalLayout.addWidget(self.widget_2) self.tb_hex_file = QtWidgets.QTextBrowser(self.frame) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(7) sizePolicy.setHeightForWidth(self.tb_hex_file.sizePolicy().hasHeightForWidth()) self.tb_hex_file.setSizePolicy(sizePolicy) self.tb_hex_file.setFocusPolicy(QtCore.Qt.NoFocus) self.tb_hex_file.setObjectName("tb_hex_file") self.verticalLayout.addWidget(self.tb_hex_file) self.horizontalLayout.addWidget(self.frame) self.line = QtWidgets.QFrame(self.centralwidget) self.line.setFrameShape(QtWidgets.QFrame.VLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.horizontalLayout.addWidget(self.line) self.widget_6 = QtWidgets.QWidget(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(1) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.widget_6.sizePolicy().hasHeightForWidth()) self.widget_6.setSizePolicy(sizePolicy) self.widget_6.setObjectName("widget_6") self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.widget_6) self.verticalLayout_4.setContentsMargins(0, 0, 0, 0) self.verticalLayout_4.setObjectName("verticalLayout_4") self.widget_7 = QtWidgets.QWidget(self.widget_6) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(2) sizePolicy.setHeightForWidth(self.widget_7.sizePolicy().hasHeightForWidth()) self.widget_7.setSizePolicy(sizePolicy) self.widget_7.setObjectName("widget_7") self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.widget_7) self.verticalLayout_5.setObjectName("verticalLayout_5") self.frame_8 = QtWidgets.QFrame(self.widget_7) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.frame_8.sizePolicy().hasHeightForWidth()) self.frame_8.setSizePolicy(sizePolicy) self.frame_8.setFrameShape(QtWidgets.QFrame.NoFrame) self.frame_8.setFrameShadow(QtWidgets.QFrame.Plain) self.frame_8.setLineWidth(1) self.frame_8.setMidLineWidth(1) self.frame_8.setObjectName("frame_8") self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.frame_8) self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.btn_autoupdate = QtWidgets.QPushButton(self.frame_8) self.btn_autoupdate.setEnabled(False) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_autoupdate.sizePolicy().hasHeightForWidth()) self.btn_autoupdate.setSizePolicy(sizePolicy) self.btn_autoupdate.setObjectName("btn_autoupdate") self.horizontalLayout_7.addWidget(self.btn_autoupdate) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_7.addItem(spacerItem) self.btn_exit = QtWidgets.QPushButton(self.frame_8) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.btn_exit.sizePolicy().hasHeightForWidth()) self.btn_exit.setSizePolicy(sizePolicy) self.btn_exit.setObjectName("btn_exit") self.horizontalLayout_7.addWidget(self.btn_exit) self.verticalLayout_5.addWidget(self.frame_8) self.widget1 = QtWidgets.QWidget(self.widget_7) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.widget1.sizePolicy().hasHeightForWidth()) self.widget1.setSizePolicy(sizePolicy) self.widget1.setObjectName("widget1") self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.widget1) self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.label_2 = QtWidgets.QLabel(self.widget1) self.label_2.setObjectName("label_2") self.horizontalLayout_6.addWidget(self.label_2) self.progressBar = QtWidgets.QProgressBar(self.widget1) self.progressBar.setProperty("value", 0) self.progressBar.setObjectName("progressBar") self.horizontalLayout_6.addWidget(self.progressBar) self.verticalLayout_5.addWidget(self.widget1) self.tb_update_info = QtWidgets.QPlainTextEdit(self.widget_7) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(9) sizePolicy.setHeightForWidth(self.tb_update_info.sizePolicy().hasHeightForWidth()) self.tb_update_info.setSizePolicy(sizePolicy) self.tb_update_info.setFocusPolicy(QtCore.Qt.NoFocus) self.tb_update_info.setReadOnly(True) self.tb_update_info.setObjectName("tb_update_info") self.verticalLayout_5.addWidget(self.tb_update_info) self.verticalLayout_4.addWidget(self.widget_7) self.horizontalLayout.addWidget(self.widget_6) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)