コード例 #1
0
ファイル: tabstest.py プロジェクト: redn6gx/205_Final_Project
class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()
        self.tabs = QTabWidget(self)
        # self.tabs.setTabsClosable(True)
        layout = QGridLayout(self)
        layout.addWidget(self.tabs, 0, 0, 1, 2)
        self.tab1 = Homepage()
        self.tabs.addTab(self.tab1, "Home")
        self.tab2 = savedpage()
        self.tabs.addTab(self.tab2, "Saved")

    #this creates the result tab
    def createNewTab(self, imgs):

        #DELETE OLD TAB
        for i in range(self.tabs.count()):
            if self.tabs.tabText(i) == 'Results':
                self.tabs.removeTab(i)

        index = self.tabs.count()
        self.tabs.addTab(resultpage(), 'Results')
        self.tabs.setCurrentIndex(index)
        self.tabs.update()

    #this creates the saved tab
    def savedtab(self):
        #DELETE OLD TAB
        for i in range(self.tabs.count()):
            if self.tabs.tabText(i) == 'Saved':
                self.tabs.removeTab(i)

        index = self.tabs.count()
        self.tabs.addTab(savedpage(), 'Saved')
        self.tabs.setCurrentIndex(index)
        self.tabs.update()

    #this creates the edit tab
    def paintTab(self, img):
        #DELETE OLD TAB
        for i in range(self.tabs.count()):
            if self.tabs.tabText(i) == 'Edit':
                self.tabs.removeTab(i)

        index = self.tabs.count()
        self.tabs.addTab(ImageManipulation(img), 'Edit')
        self.tabs.setCurrentIndex(index)
        self.tabs.update()

    #Deprecated
    def repaint(self):
        #redrawing tab
        self.tabs.currentWidget().repaint()
コード例 #2
0
ファイル: camera.py プロジェクト: desxedada/EmployeeFatigue
class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.cameraInfo = QCameraInfo.defaultCamera()
        self.camera = QCamera(self.cameraInfo)
        self.camera.setCaptureMode(QCamera.CaptureStillImage)
        self.imageCapture = QCameraImageCapture(self.camera)
        self.imageCapture.imageCaptured.connect(self.imageCaptured)
        self.imageCapture.imageSaved.connect(self.imageSaved)
        self.currentPreview = QImage()

        toolBar = QToolBar()
        self.addToolBar(toolBar)

        fileMenu = self.menuBar().addMenu("&File")
        shutterIcon = QIcon(
            os.path.join(os.path.dirname(__file__), "shutter.svg"))
        self.takePictureAction = QAction(shutterIcon,
                                         "&Take Picture",
                                         self,
                                         shortcut="Ctrl+T",
                                         triggered=self.takePicture)
        self.takePictureAction.setToolTip("Take Picture")
        fileMenu.addAction(self.takePictureAction)
        toolBar.addAction(self.takePictureAction)

        exitAction = QAction(QIcon.fromTheme("application-exit"),
                             "E&xit",
                             self,
                             shortcut="Ctrl+Q",
                             triggered=self.close)
        fileMenu.addAction(exitAction)

        aboutMenu = self.menuBar().addMenu("&About")
        aboutQtAction = QAction("About &Qt", self, triggered=qApp.aboutQt)
        aboutMenu.addAction(aboutQtAction)

        self.tabWidget = QTabWidget()
        self.setCentralWidget(self.tabWidget)

        self.cameraViewfinder = QCameraViewfinder()
        self.camera.setViewfinder(self.cameraViewfinder)
        self.tabWidget.addTab(self.cameraViewfinder, "Viewfinder")

        if self.camera.status() != QCamera.UnavailableStatus:
            name = self.cameraInfo.description()
            self.setWindowTitle("PySide6 Camera Example (" + name + ")")
            self.statusBar().showMessage("Starting: '" + name + "'", 5000)
            self.camera.start()
        else:
            self.setWindowTitle("PySide6 Camera Example")
            self.takePictureAction.setEnabled(False)
            self.statusBar().showMessage("Camera unavailable", 5000)

    def nextImageFileName(self):
        picturesLocation = QStandardPaths.writableLocation(
            QStandardPaths.PicturesLocation)
        dateString = QDate.currentDate().toString("yyyyMMdd")
        pattern = picturesLocation + "/pyside6_camera_" + dateString + "_{:03d}.jpg"
        n = 1
        while True:
            result = pattern.format(n)
            if not os.path.exists(result):
                return result
            n = n + 1
        return None

    def takePicture(self):
        self.currentPreview = QImage()
        self.camera.searchAndLock()
        self.imageCapture.capture(self.nextImageFileName())
        self.camera.unlock()

    def imageCaptured(self, id, previewImage):
        self.currentPreview = previewImage

    def imageSaved(self, id, fileName):
        index = self.tabWidget.count()
        imageView = ImageView(self.currentPreview, fileName)
        self.tabWidget.addTab(imageView, "Capture #{}".format(index))
        self.tabWidget.setCurrentIndex(index)
コード例 #3
0
class ProgramEditorWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        StylesheetLoader.RegisterWidget(self)
        self.setWindowIcon(QIcon("Images/UCIcon.png"))

        centralLayout = QVBoxLayout()
        centralWidget = QWidget()
        centralWidget.setLayout(centralLayout)
        self.setCentralWidget(centralWidget)

        self._tabWidget = QTabWidget()
        centralLayout.addWidget(self._tabWidget)

        menuBar = MenuBar()
        self.setMenuBar(menuBar)

        menuBar.saveProgram.connect(
            lambda: self._tabWidget.currentWidget().SaveProgram())
        menuBar.closeProgram.connect(
            lambda: self.RequestCloseTab(self._tabWidget.currentIndex()))

        self._tabWidget.tabCloseRequested.connect(self.RequestCloseTab)
        self._tabWidget.setTabsClosable(True)

        timer = QTimer(self)
        timer.timeout.connect(self.CheckPrograms)
        timer.start(30)

    def OpenProgram(self, program: Program):
        for tab in self.tabs():
            if tab.program is program:
                self._tabWidget.setCurrentWidget(tab)
                return
        newTab = ProgramEditorTab(program)
        self._tabWidget.addTab(newTab, program.name)

    def RequestCloseTab(self, index):
        tab: ProgramEditorTab = self._tabWidget.widget(index)
        self._tabWidget.setCurrentWidget(tab)
        if tab.modified:
            ret = QMessageBox.warning(
                self, "Confirm", "'" + tab.program.name +
                "' has been modified.\nDo you want to save changes?",
                QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel,
                QMessageBox.Save)
            if ret is QMessageBox.Save:
                tab.SaveProgram()
            elif ret is QMessageBox.Cancel:
                return False
        self._tabWidget.removeTab(index)
        if not self._tabWidget.count():
            self.close()
        return True

    def closeEvent(self, event) -> None:
        if not self.RequestCloseAll():
            event.ignore()

    def RequestCloseAll(self):
        while self._tabWidget.count():
            if not self.RequestCloseTab(0):
                return False
        return True

    def tabs(self) -> List[ProgramEditorTab]:
        return [
            self._tabWidget.widget(i) for i in range(self._tabWidget.count())
        ]

    def CheckPrograms(self):
        modified = False
        for tab in self.tabs():
            title = tab.program.name
            if tab.modified:
                modified = True
                title += "*"
            self._tabWidget.setTabText(self._tabWidget.indexOf(tab), title)
            if tab.program not in AppGlobals.Chip().programs:
                self.deleteLater()

        current: ProgramEditorTab = self._tabWidget.currentWidget()
        if current:
            title = current.program.name
            if modified:
                title += " *"
            title += " | uChip Program Editor"
            self.setWindowTitle(title)