コード例 #1
0
class InputDialog(QDialog):
    def __init__(self, parent=None):
        super(InputDialog, self).__init__(parent)

        self.initUI()

    def initUI(self):
        #self.btn = QPushButton('URL:', self)
        #self.btn.move(20, 20)
        self.labelName = QLabel("Insert your URL: ", self)
        self.labelName.move(20, 27)
        #        self.btn.clicked.connect(self.showDialogUrl)

        self.le = QLineEdit(self)
        self.le.setFixedWidth(650)
        self.le.move(130, 22)

        self.btnfolder = QPushButton("Select folder...", self)
        #self.btnfolder.setIcon(QIcon("icon/folder.png"))
        self.btnfolder.move(20, 80)
        self.btnfolder.clicked.connect(self.showDialogDirectory)

        self.le1 = QLineEdit(self)
        self.le1.move(130, 80)
        self.le1.setText(expanduser("~"))

        self.button = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
        self.button.move(80, 120)

        self.button.accepted.connect(self.accept)
        self.button.rejected.connect(self.reject)

        self.setGeometry(300, 300, 290, 150)
        self.setWindowTitle('Input dialog')
        self.show()

    def showDialogDirectory(self):
        dest = QFileDialog.getExistingDirectory(self, "Choose dir",
                                                expanduser("~"))

        print(str(dest))
        if (str(dest) != ""):
            self.le1.setText(str(dest))

    @staticmethod
    def getInput(parent=None):
        dialog = InputDialog()
        dialog.setFixedWidth(800)
        result = dialog.exec_()
        url = dialog.le.text()
        dest = dialog.le1.text()
        return (url, dest)
コード例 #2
0
class AddLabelPopup(QDialog):
    def __init__(self, tablename, refAbsID, parent=None):
        super(QWidget, self).__init__(parent)
        self.setWindowTitle("Add Labels")
        self.refType = tablename
        self.refAbsID = refAbsID
        self.initUI()
        self.returnVal = None

    def initUI(self):
        self.left = 100
        self.top = 100
        self.width = 520
        self.height = 300
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.centerWindow()

        self.labelTextList = []
        self.existLabel = []
        self.dbLabelList = []

        self.entryLineEdit = QLineEdit(self)
        self.entryLineEdit.setGeometry(360,10,150,20)
        self.entryLineEdit.setPlaceholderText("Type a label here.")

        self.entryHintList = QListWidget(self)
        self.entryHintList.setStyleSheet("max-width: 200px; max-height: 350; font-size: 15pt")
        self.entryHintList.setGeometry(360,33,150,60)  # left, top, width, height

        database = os.path.join(os.path.dirname(os.path.abspath(__file__)), "Data.db")
        refs = []
        try:
            self.conn = createConnectionToDB(database)
            self.dbLabelList = getLabelsFromDB(self.conn)
        except:
            buttonReply = QMessageBox.critical(self, 'Alert', "Initialize Reference Table: Database is missing.", QMessageBox.Ok, QMessageBox.Ok)

        self.getCurrentLabelList()
        self.updateLabels()

        self.entryHintList.addItems(self.dbLabelList)
        self.entryHintList.itemDoubleClicked.connect(self.setEntryText)

        self.addLabelButton = QPushButton("Add Label", self)
        self.addLabelButton.move(380,95)
        self.addLabelButton.clicked.connect(self.addLabel)

        self.buttons = QDialogButtonBox(
            QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
            Qt.Horizontal, self)
        self.buttons.accepted.connect(self.accept)
        self.buttons.rejected.connect(self.reject)
        self.buttons.move(350,260)

    def centerWindow(self):
        frameGeo = self.frameGeometry()
        screen = QApplication.desktop().screenNumber(QApplication.desktop().cursor().pos())
        centerPoint = QApplication.desktop().screenGeometry(screen).center()
        frameGeo.moveCenter(centerPoint)
        self.move(frameGeo.topLeft())

    def setEntryText(self, item):
        self.entryLineEdit.setText(item.text())

    def addLabel(self):
        newLabel = self.entryLineEdit.text()
        if len(self.labelTextList) < 20:
            if newLabel not in self.labelTextList:
                self.labelTextList.append(newLabel)
                self.updateLabels()
                if newLabel not in self.dbLabelList:
                    self.addLabelToDB(newLabel)
            else:
                buttonReply = QMessageBox.critical(self, 'Alert', "Label Already Exists", QMessageBox.Ok, QMessageBox.Ok)
        else:
            buttonReply = QMessageBox.critical(self, 'Alert', "Too Many Labels. Consider using them wisely.", QMessageBox.Ok, QMessageBox.Ok)

    def updateLabels(self):
        for ind in range(len(self.labelTextList)):
            tempText = self.labelTextList[ind]
            tempLabel = QLabel(tempText, self)
            tempLabel.setStyleSheet("QLabel {background-color: green; border-style: outset; border-width: 2px;" \
                                    "border-radius: 10px; border-color: beige; font: bold 10px; max-width: 150px; padding: 6px;}")
            ind_y = int(ind%10)
            ind_x = int(ind/10)
            pos_y = 10+ind_y*27
            pos_x = 10+ind_x*170
            tempLabel.move(pos_x, pos_y)
            tempLabel.show()

    def getValue(self):
        # return label value to InfoTabs
        return self.labelTextList

    def getCurrentLabelList(self):
        refItem = readRefInDBTableByID(self.conn, self.refType, self.refAbsID)
        if len(refItem['Labels']) > 0:
            tempList = refItem['Labels'].split(';')
            if len(tempList) > 0:
                self.labelTextList = tempList

    def addLabelToDB(self, labelText):
        addLabelToLabelsTable(self.conn, labelText)
コード例 #3
0
    def create_ui(self):
        # 1.文字标签
        # QLabel(显示的文字, 父标签/放到哪个窗口上)
        label1 = QLabel('用户名:', self)
        # 一般不常用的移动坐标
        label1.move(50, 10)

        # 2.按钮
        btn1 = QPushButton('登录', self)
        btn1.move(50, 50)
        # css语法:选择器{属性1:属性值1; 属性2:属性值2;..}
        # color - 字体颜色,对应的值:颜色单词, rbg(255, 0, 0)
        #
        btn1.setStyleSheet('QPushButton{}')
        btn2 = QRadioButton('男', self)
        btn2.move(50, 100)
        btn3 = QCheckBox('篮球', self)
        btn3.move(50, 150)
        btn4 = QCommandLinkButton('hello', 'hellowword', self)
        btn4.move(50, 200)

        b1 = QDialogButtonBox.StandardButton.Ok
        b2 = QDialogButtonBox.StandardButton.Cancel
        btn5 = QDialogButtonBox(b2, self)
        btn5.move(50, 300)

        # 3.输入框
        input1 = QLineEdit(self)
        input1.move(150, 10)
        input2 = QLineEdit('admin', self)
        input2.move(150, 50)
        input1.setText('张三')
        # 富文本
        input3 = QTextEdit('张三', self)
        input3.move(50, 300)
        # 设置成只读
        input3.setReadOnly(True)
        # 只能显示纯文本
        input4 = QPlainTextEdit(self)
        input4.move(300, 10)
        # 输入数值
        input5 = QSpinBox(self)
        input5.move(100, 100)
        input5.setMinimum(10)
        input5.setMaximum(20)
        input5.setValue(15)
        print(input5.value())  # 获取当前值
        # 输入小数
        input6 = QDoubleSpinBox(self)
        input6.move(100, 150)
        # 下拉菜单
        input7 = QComboBox(self)
        input7.addItems(['item1', 'item2'])
        input7.move(150, 200)
        print(input7.currentText())  # 获取当前选中的选项,适用input8
        input8 = QFontComboBox(self)
        input8.move(350, 300)
        input8.setCurrentIndex(2)
        print(input8.currentText())
        label1.setFont(input8.currentFont())
        # 日期选择
        input9 = QDateEdit(date.today(), self)
        input9.move(300, 400)
        # 选择颜色
        input10 = QColorDialog(self)
        input10.move(400, 400)
        # input10.show()

        input11 = QDial(self)
        input11.move(300, 200)

        input12 = QSlider(self)
        input12.move(430, 350)
        input12.setMaximum(100)
        input12.setMinimum(-100)
        input12.setValue(20)
        input12.setOrientation(Qt.Horizontal)  # 设置为水平方向