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)
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)
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) # 设置为水平方向