コード例 #1
0
    class HeaderFrame(QFrame):
        """ Clickable frame with title. """

        class AbstractHeaderFrameItem(QFrame):

            def __init__(self, parent):
                super(__class__, self).__init__(parent)
                self.setContentsMargins(0, 0, 0, 0)
                self.setLayout(QHBoxLayout())
                self.layout().setContentsMargins(0, 0, 0, 0)
                self.layout().setSpacing(0)

            def clearLayout(self):
                while self.layout().count():
                    child = self.layout().takeAt(0)
                    if child.widget():
                        child.widget().deleteLater()

            def setCentralWidget(self, widget: QWidget):
                self.clearLayout()
                self.layout().addWidget(widget)

            def refresh(self):
                pass

        class VSepItem(AbstractHeaderFrameItem):

            def __init__(self, parent):
                super(__class__, self).__init__(parent)
                self.setCentralWidget(VSep(self))

        class HSpacerItem(AbstractHeaderFrameItem):

            def __init__(self, parent):
                super(__class__, self).__init__(parent)
                self.setCentralWidget(HSpacer(self))

        arrowClicked = pyqtSignal()
        upButtonClicked = pyqtSignal()
        downButtonClicked = pyqtSignal()
        configButtonClicked = pyqtSignal()
        closeButtonClicked = pyqtSignal()

        def __init__(self, parent: 'ui.widget.CollapsibleFrame'):
            super(__class__, self).__init__(parent)

            self._parent = parent
            self.setMinimumHeight(26)
            self.setMaximumHeight(26)
            self.indicateError(False)

            self._hlayout = QHBoxLayout()
            self._hlayout.setContentsMargins(0, 0, 0, 0)
            self._hlayout.setSpacing(0)

            self._arrow = None

            self._hlayout.addWidget(self._init_header_frame(parent.isCollapsed()))
            self.setLayout(self._hlayout)

        def _init_header_frame(self, collapsed: bool):
            self._frm_header = QFrame(self)
            self._frm_header.setMinimumHeight(24)
            self._frm_header.setMaximumHeight(24)
            frm_header_layout = QHBoxLayout(self)
            frm_header_layout.setContentsMargins(0, 0, 0, 0)
            frm_header_layout.addWidget(self._init_arrow(collapsed))
            background_color = self._frm_header.palette().color(self._frm_header.backgroundRole())
            self._frm_header.setStyleSheet("QFrame { border:0px; background:" + background_color.darker(96).name() + "; }")
            self._frm_header.setLayout(frm_header_layout)
            return self._frm_header

        def _init_arrow(self, collapsed):
            self._arrow = CollapsibleFrame.Arrow(self, collapsed=collapsed)
            self._arrow.setMinimumWidth(24)
            self._arrow.setMaximumWidth(24)
            self._arrow.setStyleSheet("border:0px")
            return self._arrow

        def addWidget(self, header_item: AbstractHeaderFrameItem):
            self._frm_header.layout().addWidget(header_item)

        def refresh(self):
            """ Refreshes the header model (e.g. line-count, character-count, etc.). """
            for i in range(self._frm_header.layout().count()):
                widget = self._frm_header.layout().itemAt(i).widget()
                if isinstance(widget, CollapsibleFrame.HeaderFrame.AbstractHeaderFrameItem):
                    widget.refresh()

        def indicateError(self, status: bool):
            """ Indicates an error by painting the title-border red. Otherweise black. """
            if status:
                self.setStyleSheet("QFrame { border:1px solid red; }")
            else:
                self.setStyleSheet("QFrame { border:1px solid rgb(41, 41, 41); }")

        def mouseReleaseEvent(self, event):
            if self.underMouse() and event.button() == QtCore.Qt.LeftButton:
                # The arrow (or something non-button like) was clicked
                self.arrowClicked.emit()
            return super(CollapsibleFrame.HeaderFrame, self).mousePressEvent(event)
コード例 #2
0
 def initWin(self):
     iptGrid = QGridLayout()
     title = Text("TSP", (255, 0, 0), 16, "center")
     pic = QPixmap("C:\\tsp.png")
     picLbl = QLabel()
     picLbl.setPixmap(pic)
     picLbl.setScaledContents(True)
     titleLayout = QVBoxLayout()
     titleLayout.addWidget(title)
     titleLayout.addWidget(picLbl)
     titleFrame = QFrame()
     titleFrame.setFrameShape(QFrame.StyledPanel)
     titleFrame.setAutoFillBackground(True)
     p5 = titleFrame.palette()
     p5.setColor(titleFrame.backgroundRole(), QColor(255, 255, 255))
     titleFrame.setPalette(p5)
     titleFrame.setLayout(titleLayout)
     iptTitle = Text("Program Input", (255, 0, 0), 12, "center")
     iptTxt1 = QLabel("Cities No:")
     iptTxt1.setFont(QFont("Decorative", 12))
     iptTxt2 = QLabel("start:")
     iptTxt2.setFont(QFont("Decorative", 12))
     self.iptEdt1 = QLineEdit()
     self.iptEdt1.textChanged[str].connect(self.get_input)
     self.iptEdt2 = QLineEdit()
     self.iptEdt2.textChanged[str].connect(self.get_input)
     self.iptBtn1 = QPushButton("Build")
     self.iptBtn1.clicked.connect(self.bulid_map)
     self.iptBtn2 = QPushButton("Rturn")
     self.iptBtn2.clicked.connect(self.get_initial)
     iptH = QHBoxLayout()
     iptH.addWidget(self.iptBtn1)
     iptH.addWidget(self.iptBtn2)
     iptGrid.addWidget(iptTitle, 1, 0, 1, 5)
     iptGrid.addWidget(iptTxt1, 2, 0)
     iptGrid.addWidget(self.iptEdt1, 2, 1)
     iptGrid.addWidget(iptTxt2, 3, 0)
     iptGrid.addWidget(self.iptEdt2, 3, 1)
     iptGrid.setVerticalSpacing(10)
     iptV = QVBoxLayout()
     iptV.addLayout(iptGrid)
     iptV.addLayout(iptH)
     iptFrame = QFrame()
     iptFrame.setAutoFillBackground(True)
     p6 = iptFrame.palette()
     p6.setColor(iptFrame.backgroundRole(), QColor(220, 225, 255))
     iptFrame.setPalette(p6)
     iptFrame.setFrameShape(QFrame.StyledPanel)
     iptFrame.setLayout(iptV)
     srgGrid = QGridLayout()
     #srgGrid.setVerticalSpacing(10)
     srgTitle = Text("Algorithms", (255, 0, 0), 12, "center")
     self.srgBtn1 = QPushButton("Genetic")
     self.srgBtn1.clicked.connect(self.run_algorithm)
     self.srgBtn2 = QPushButton("Simulated")
     self.srgBtn2.clicked.connect(self.run_algorithm)
     self.srgBtn3 = QPushButton("Tabu")
     self.srgBtn3.clicked.connect(self.run_algorithm)
     self.srgBtn4 = QPushButton("reset")
     self.srgBtn4.clicked.connect(self.reset)
     srgGrid.addWidget(srgTitle, 1, 0, 1, 6)
     srgGrid.addWidget(self.srgBtn1, 2, 1, 2, 4)
     srgGrid.addWidget(self.srgBtn2, 3, 1, 3, 4)
     srgGrid.addWidget(self.srgBtn3, 4, 1, 4, 4)
     srgGrid.addWidget(self.srgBtn4, 5, 1, 5, 4)
     srgFrame = QFrame()
     srgFrame.setFrameShape(QFrame.StyledPanel)
     srgFrame.setAutoFillBackground(True)
     p7 = srgFrame.palette()
     p7.setColor(srgFrame.backgroundRole(), QColor(255, 255, 255))
     srgFrame.setPalette(p7)
     srgFrame.setLayout(srgGrid)
     otpGrid = QGridLayout()
     otpTitle = Text("Program Output", (255, 0, 0), 12, "center")
     otpTxt1 = QLabel("The Cost")
     otpTxt1.setFont(QFont("Decorative", 12))
     self.lcd1 = QLCDNumber()
     otpGrid.addWidget(otpTitle, 1, 0, 1, 2)
     otpGrid.addWidget(otpTxt1, 2, 0)
     otpGrid.addWidget(self.lcd1, 2, 1)
     otpFrame = QFrame()
     otpFrame.setFrameShape(QFrame.StyledPanel)
     otpFrame.setAutoFillBackground(True)
     p8 = otpFrame.palette()
     p8.setColor(otpFrame.backgroundRole(), QColor(220, 225, 255))
     otpFrame.setPalette(p8)
     otpFrame.setLayout(otpGrid)
     splitter1 = QSplitter(Qt.Vertical)
     splitter1.addWidget(titleFrame)
     splitter1.addWidget(iptFrame)
     splitter1.setSizes([240, 135])
     splitter2 = QSplitter(Qt.Vertical)
     splitter2.addWidget(srgFrame)
     splitter2.addWidget(otpFrame)
     splitter2.setSizes([200, 92])
     splitter3 = QSplitter(Qt.Vertical)
     splitter3.addWidget(splitter1)
     splitter3.addWidget(splitter2)
     splitter3.setSizes([382, 291])
     splitter3.resize(260, 685)
     splitter3.move(1100, 5)
     splitter3.setParent(self)
     splitter3.setAutoFillBackground(True)
     p3 = splitter3.palette()
     p3.setColor(splitter3.backgroundRole(), QColor(255, 255, 255))
     splitter3.setPalette(p3)
     self.mapFrame = QFrame()
     self.mapFrame.setFrameShape(QFrame.StyledPanel)
     self.mapFrame.move(5, 5)
     self.mapFrame.resize(1090, 685)
     self.mapFrame.setParent(self)
     self.setAutoFillBackground(True)
     p2 = self.palette()
     p2.setColor(self.backgroundRole(), QColor(0, 0, 0))
     self.setPalette(p2)
     self.mapFrame.setParent(self)
     self.hint = Text("Click the bulid button to bulid a random map",
                      (255, 0, 0), 23, "center")
     self.hint.move(230, 100)
     self.hint.setParent(self)
     self.setWindowTitle("TSP")
     self.width = QDesktopWidget().availableGeometry().width()
     self.height = QDesktopWidget().availableGeometry().height() - 40
     self.resize(self.width, self.height)
     self.show()
     self.nodes = {}
     self.points = {}
     self.flag = True
コード例 #3
0
def main():
    MAX_INTENSITY = 255

    app = QApplication([])

    # Create and lay out widgets.

    redLabel = QLabel('Red:')
    redLabel.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
    redLabel.setAutoFillBackground(True)
    p = redLabel.palette()
    p.setColor(redLabel.backgroundRole(), Qt.red)
    redLabel.setPalette(p)

    greenLabel = QLabel('Green:')
    greenLabel.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
    greenLabel.setAutoFillBackground(True)
    p = greenLabel.palette()
    p.setColor(greenLabel.backgroundRole(), Qt.green)
    greenLabel.setPalette(p)

    blueLabel = QLabel('Blue:')
    blueLabel.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
    blueLabel.setAutoFillBackground(True)
    p = blueLabel.palette()
    p.setColor(blueLabel.backgroundRole(), Qt.blue)
    blueLabel.setPalette(p)

    redSlider = QSlider(Qt.Horizontal)
    redSlider.setMinimum(0)
    redSlider.setMaximum(MAX_INTENSITY)

    greenSlider = QSlider(Qt.Horizontal)
    greenSlider.setMinimum(0)
    greenSlider.setMaximum(MAX_INTENSITY)

    blueSlider = QSlider(Qt.Horizontal)
    blueSlider.setMinimum(0)
    blueSlider.setMaximum(MAX_INTENSITY)

    redLineEdit = QLineEdit('0')
    greenLineEdit = QLineEdit('0')
    blueLineEdit = QLineEdit('0')

    controlFrameLayout = QGridLayout()
    controlFrameLayout.setSpacing(0)
    controlFrameLayout.setContentsMargins(0, 0, 0, 0)
    controlFrameLayout.setRowStretch(0, 0)
    controlFrameLayout.setRowStretch(1, 0)
    controlFrameLayout.setRowStretch(2, 0)
    controlFrameLayout.setColumnStretch(0, 0)
    controlFrameLayout.setColumnStretch(1, 1)
    controlFrameLayout.setColumnStretch(2, 0)
    controlFrameLayout.addWidget(redLabel, 0, 0)
    controlFrameLayout.addWidget(greenLabel, 1, 0)
    controlFrameLayout.addWidget(blueLabel, 2, 0)
    controlFrameLayout.addWidget(redSlider, 0, 1)
    controlFrameLayout.addWidget(greenSlider, 1, 1)
    controlFrameLayout.addWidget(blueSlider, 2, 1)
    controlFrameLayout.addWidget(redLineEdit, 0, 2)
    controlFrameLayout.addWidget(greenLineEdit, 1, 2)
    controlFrameLayout.addWidget(blueLineEdit, 2, 2)
    controlFrame = QFrame()
    controlFrame.setLayout(controlFrameLayout)

    colorFrame = QFrame()
    colorFrame.setAutoFillBackground(True)
    p = colorFrame.palette()
    p.setColor(colorFrame.backgroundRole(), Qt.black)
    colorFrame.setPalette(p)

    centralFrameLayout = QGridLayout()
    centralFrameLayout.setSpacing(0)
    centralFrameLayout.setContentsMargins(0, 0, 0, 0)
    centralFrameLayout.setRowStretch(0, 1)
    centralFrameLayout.setRowStretch(1, 0)
    centralFrameLayout.setColumnStretch(0, 1)
    centralFrameLayout.addWidget(colorFrame, 0, 0)
    centralFrameLayout.addWidget(controlFrame, 1, 0)
    centralFrame = QFrame()
    centralFrame.setLayout(centralFrameLayout)

    window = QMainWindow()
    window.setWindowTitle('Color Displayer')
    window.setCentralWidget(centralFrame)
    screenSize = QDesktopWidget().screenGeometry()
    window.resize(screenSize.width() // 2, screenSize.height() // 2)

    # Handle events for the QSlider objects.

    def sliderSlot():
        r = redSlider.value()
        g = greenSlider.value()
        b = blueSlider.value()
        redLineEdit.setText(str(r))
        greenLineEdit.setText(str(g))
        blueLineEdit.setText(str(b))
        p = colorFrame.palette()
        p.setColor(colorFrame.backgroundRole(), QColor(r, g, b))
        colorFrame.setPalette(p)

    redSlider.valueChanged.connect(sliderSlot)
    greenSlider.valueChanged.connect(sliderSlot)
    blueSlider.valueChanged.connect(sliderSlot)

    # Handle events for the LineEdit objects.

    def lineEditSlot():
        try:
            r = int(redLineEdit.text())
            g = int(greenLineEdit.text())
            b = int(blueLineEdit.text())
            if (r < 0) or (r > MAX_INTENSITY): raise Exception()
            if (g < 0) or (g > MAX_INTENSITY): raise Exception()
            if (b < 0) or (b > MAX_INTENSITY): raise Exception()
            redSlider.setValue(r)
            greenSlider.setValue(g)
            blueSlider.setValue(b)
            p = colorFrame.palette()
            p.setColor(colorFrame.backgroundRole(), QColor(r, g, b))
            colorFrame.setPalette(p)
        except:
            # Use the Slider objects to restore the LineEdit objects.
            redLineEdit.setText(str(redSlider.value()))
            greenLineEdit.setText(str(greenSlider.value()))
            blueLineEdit.setText(str(blueSlider.value()))

    redLineEdit.returnPressed.connect(lineEditSlot)
    greenLineEdit.returnPressed.connect(lineEditSlot)
    blueLineEdit.returnPressed.connect(lineEditSlot)

    window.show()
    exit(app.exec_())
コード例 #4
0
ファイル: slideColor.py プロジェクト: kiarashsa84/slideColor
class F(QWidget):
    def __init__(self):
        super().__init__()
        self.setUI()

    def setUI(self):
        self.setGeometry(500, 400, 500, 600)
        self.setWindowTitle("Table")

        self.Qf = QFrame(self)
        self.Qf.setGeometry(100, 10, 300, 300)

        self.Qs = QSlider(Qt.Horizontal, self)
        self.Qs.setGeometry(100, 520, 300, 15)

        self.pa = self.Qf.palette()
        role = self.Qf.backgroundRole()
        self.pa.setColor(role, QColor(255, 255, 255))
        self.Qf.setPalette(self.pa)
        self.Qf.setAutoFillBackground(True)

        self.Qs.valueChanged.connect(self.paint)

        self.show()

    def paint(self):

        R = []
        G = []
        B = []

        for i in range(0, 100):
            R.append(random.randrange(0, 256))
            G.append(random.randrange(0, 256))
            B.append(random.randrange(0, 256))

        rang = []
        jam = []

        slideval = self.Qs.value()

        for b in range(0, 100):
            rang = [R[b], G[b], B[b]]
            jam.append(rang)

        print(jam)

        self.palette = self.Qf.palette()
        r = self.Qf.backgroundRole()

        if slideval == 0:
            self.x = 255
            self.y = 255
            self.z = 250

            self.palette.setColor(r, QColor(self.x, self.y, self.z))
            self.Qf.setPalette(self.palette)
            self.Qf.setAutoFillBackground(True)

        elif slideval == 99:
            self.x = 0
            self.y = 0
            self.z = 0
            self.palette.setColor(r, QColor(self.x, self.y, self.z))
            self.Qf.setPalette(self.palette)
            self.Qf.setAutoFillBackground(True)

        else:
            self.x, self.y, self.z = jam[slideval]
            self.palette.setColor(r, QColor(self.x, self.y, self.z))
            self.Qf.setPalette(self.palette)
            self.Qf.setAutoFillBackground(True)