您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“python中pyqt5怎么用”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“python中pyqt5怎么用”這篇文章吧。
基本框架
import sys from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * class Demo(QWidget): def __init__(self): super(Demo, self).__init__() # 設(shè)置主界面 # 設(shè)置控件 # 設(shè)置布局 # 設(shè)置信號(hào) def main(self): # 槽函數(shù) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
程序啟動(dòng)畫面
if __name__ == '__main__': app = QApplication(sys.argv) # 原有 splash = QSplashScreen() splash.setPixmap(QPixmap('images/splash.jpg')) splash.show() splash.showMessage('string', Qt.AlignBottom | Qt.AlignCenter, Qt.white) demo = Demo() # 原有 demo.show() # 原有 splash.finish(demo) sys.exit(app.exec_()) # 原有
self.setWindowTitle('title') # 設(shè)置窗體名稱
self.setWindowIcon('path') # 設(shè)置窗體圖標(biāo)
self.resize(300, 250) # 更改窗體大小
self.size() # 獲取窗體大小
self.width() # 獲取窗體寬度
self.height() # 獲取窗體高度
self.setFixedWidth(int width) # 設(shè)置窗體寬度
self.setFixedHeight(int height) # 設(shè)置窗體高度
self.setFixedSize(int width, int height) # 設(shè)置窗體大小
self.setGeometry(int x, int y, int width, int height) # 設(shè)置窗口位置
self.frameGeometry() # 獲取窗口的大小和位置
self.move(int x, int y) # 設(shè)置窗口的位置
self.pos() # 獲取窗口左上角坐標(biāo)
self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) # 禁止最大化按鈕
self.setFixedSize(self.width(), self.height()) # 禁止拉伸窗口大小
1、基本格式
QMessageBox.information(QWidget, ‘Title', 'Content‘, buttons)
第一個(gè)參數(shù)填self,表示該信息框?qū)儆谖覀冞@里的Demo窗口;第二個(gè)參數(shù)類型為字符串,填入的是該信息框的標(biāo)題;第三個(gè)參數(shù)類型也是字符串,填入的是信息框的提示內(nèi)容;最后個(gè)參數(shù)為信息框上要添加的按鈕。多個(gè)按鈕之間用 | 來連接,常見的按鈕種類有以下幾種:
QMessageBox.Ok
QMessageBox.Yes
QMessageBox.No
QMessageBox.Close
QMessageBox.Cancel
QMessage.Open
QMessage.Save
類型 | 名稱 |
---|---|
QMessageBox.information | 消息框 |
QMessageBox.question | 問答框 |
QMessageBox.warning | 警告框 |
QMessageBox.critical | 錯(cuò)誤框 |
QMessageBox.about | 關(guān)于框 |
choice = QMessageBox.question(self, 'Title', 'Content', QMessageBox.Yes | QMessageBox.No) if choice == QMessageBox.Yes: pass elif choice == QMessageBox.No: pass
實(shí)例化控件
self.text_edit = QTextEdit(self) # 文本編輯框
self.text_browser = QTextBrowser(self) # 文本瀏覽框
設(shè)置信號(hào)
控件類型 | 信號(hào) | 描述 |
---|---|---|
QTextEdit | textChanged | 文本發(fā)生改變 |
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QTextEdit | setText(‘Content') | 設(shè)置文本 |
QTextEdit | toPlainText() | 獲取文本 |
QTextEdit | setTextColor(color) | 設(shè)置文本顏色 |
QTextEdit | setFont(font) | 設(shè)置字體 |
QPushButton,QToolButton,QRadioButton和QCheckBox均繼承自QAbstractButton類
實(shí)例化控件
self.test_button = QPushButton('Test', self) # 實(shí)例化按鈕
self.test_button = QPushButton('&Download',self) # 實(shí)例化按鈕并設(shè)置快捷鍵為Alt+D
self.test_button = QToolButton(self) # 工具按鈕(初始不能傳入文本)
self.on_button = QRadioButton('on', self) # 單選按鈕
self.checkbox1 = QCheckBox('Checkbox 1', self) # 復(fù)選框的三種狀態(tài):全選中、半選中和無選中
設(shè)置信號(hào)
控件類型 | 信號(hào) | 描述 |
---|---|---|
通用 | Pressed | 當(dāng)鼠標(biāo)指針在按鈕上并按下左鍵時(shí)觸發(fā)該信號(hào) |
通用 | Released | 當(dāng)鼠標(biāo)左鍵被釋放時(shí)觸發(fā)該信號(hào) |
通用 | Clicked | 當(dāng)鼠標(biāo)左鍵被按下然后釋放時(shí),或者快捷鍵被釋放時(shí)觸發(fā)該信號(hào) |
通用 | Toggled | 當(dāng)按鈕的標(biāo)記狀態(tài)發(fā)生改變時(shí)觸發(fā)該信號(hào) |
QCheckBox | stateChanged | 復(fù)選框狀態(tài)發(fā)生改變 |
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
通用 | isDown() | 提示按鈕是否已按下 |
通用 | isChecked() | 提示按鈕是否已經(jīng)標(biāo)記 |
通用 | isEnable() | 提示按鈕是否可以被用戶點(diǎn)擊 |
通用 | isCheckAble() | 提示按鈕是否為可標(biāo)記的 |
通用 | setAutoRepeat() | 設(shè)置按鈕是否在用戶長按時(shí)可以自動(dòng)重復(fù)執(zhí)行 |
通用 | setShortcut(‘Ctrl+D') | 設(shè)置按鈕快捷鍵 |
QPushButton | setCheckable(True) | 設(shè)置按鈕是否已經(jīng)被選中,如果設(shè)置True,則表示按鈕將保持已點(diǎn)擊和釋放狀態(tài) |
QPushButton | toggle() | 在按鈕狀態(tài)之間進(jìn)行切換 |
QPushButton | setIcon(QIcon(‘button.png')) | 設(shè)置圖標(biāo) |
QPushButton | setEnabled() | 設(shè)置按鈕是否可以使用,當(dāng)設(shè)置為False時(shí),按鈕變成不可用狀態(tài),點(diǎn)擊它不會(huì)發(fā)射信號(hào) |
QPushButton | isChecked() | 判斷按鈕是否為標(biāo)記狀態(tài),若是則返回True,不是則返回False |
QPushButton | setDefault() | 設(shè)置按鈕的默認(rèn)狀態(tài) |
QPushButton | setText(‘text') | 設(shè)置按鈕的顯示文本 |
QPushButton | text() | 返回按鈕的顯示文本 |
QToolButton | setArrowType(參數(shù)1) | 設(shè)定button上顯示的箭頭類型 |
QToolButton | setToolButtonStyle(參數(shù)2) | 設(shè)定button文本和圖標(biāo)顯示的樣式 |
QRadioButton | setChecked(True) | 單選按鈕設(shè)為選中狀態(tài) |
QCheckBox | setChecked(True) | 將復(fù)選框設(shè)為選中或無選中狀態(tài) |
QCheckBox | setCheckState(Qt.Checked) | 選中狀態(tài)Qt.Checked, 無選中狀態(tài)Qt.Unchecked和半選中狀態(tài)Qt.PartiallyChecked |
QCheckBox | setTristate(True) | 讓一個(gè)復(fù)選框擁有三種狀態(tài) |
QCheckBox | setCheckState(Qt.PartiallyChecked) | 讓一個(gè)復(fù)選框擁有三種狀態(tài) |
QCheckBox | checkState() | 獲取當(dāng)前復(fù)選框的狀態(tài),返回值為int類型,0為無選中狀態(tài),1為半選中狀態(tài),2為選中狀態(tài) |
參數(shù)1 | 箭頭屬性 |
---|---|
Qt.NoArrow | 無箭頭 |
Qt.UpArrow | 向上的箭頭 |
Qt.DownArrow | 向下的箭頭 |
Qt.LeftArrow | 向左的箭頭 |
Qt.RightArrow | 向右的箭頭 |
參數(shù)2 | 樣式 |
---|---|
Qt.ToolButtonIconOnly | 只顯示圖標(biāo) |
Qt.ToolButtonTextOnly | 只顯示文本 |
Qt.ToolButtonTextBesideIcon | 文本在圖標(biāo)下面 |
Qt.ToolButtonTextUnderIcon | 文本在圖標(biāo)上面 |
Qt.ToolButtonFollowStyle | 未知… |
實(shí)例化控件
self.label = QLabel(self)
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QLabel | setPixmap(QPixmap(‘on.png')) | 給標(biāo)簽設(shè)置圖片 |
QLabel | setAlignment(Qt.AlignCenter) | 設(shè)置標(biāo)簽對(duì)齊方式 |
實(shí)例化控件
self.lineedit = QLineEdit(self)
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QLineEdit | setFont(combobox.currentFont()) | 設(shè)置字體 |
QLineEdit | setPlaceholderText() | 設(shè)置文本框顯示文字 |
QLineEdit | setMaxLength() | 設(shè)置文本框所允許輸入的最大字符數(shù) |
QLineEdit | setReadOnly() | 設(shè)置文本為只讀 |
QLineEdit | setText() | 設(shè)置文本框的內(nèi)容 |
QLineEdit | text() | 返回文本框的內(nèi)容 |
QLineEdit | setDragEnable() | 設(shè)置文本框是否接受拖動(dòng) |
QLineEdit | selectAll() | 全選 |
QLineEdit | setFocus() | 得到焦點(diǎn) |
QLineEdit | setAlignment(參數(shù)1) | 按固定值方式對(duì)齊文本 |
QLineEdit | setEchoMode(參數(shù)2) | 設(shè)置文本框的顯示格式 |
QLineEdit | setValidator(參數(shù)3) | 設(shè)置文本框的驗(yàn)證器(驗(yàn)證規(guī)則),將限制任意可能輸入的文本 |
QLineEdit | setInputMask(參數(shù)4) | 設(shè)置掩碼 |
參數(shù)1 | 功能 |
---|---|
Qt.AlignLeft | 水平方向靠左對(duì)齊 |
Qt.AlignRight | 水平方向靠右對(duì)齊 |
Qt.AlignCenter | 水平方向居中對(duì)齊 |
Qt.AlignJustify | 水平方向調(diào)整間距兩端對(duì)齊 |
Qt.AlignTop | 垂直方向靠上對(duì)齊 |
Qt.AlignBottom | 垂直方向靠下對(duì)齊 |
Qt.AlignVCenter | 垂直方向居中對(duì)齊 |
參數(shù)2 | 功能 |
---|---|
QLineEdit.Normal | 正常顯示所輸入的字符,此為默認(rèn)選項(xiàng) |
QLineEdit.NoEcho | 不顯示任何輸入的字符,常用于密碼類型的輸入,且長度保密 |
QLineEdit.Password | 顯示與平臺(tái)相關(guān)的密碼掩飾字符,而不是實(shí)際輸入的字符 |
QLineEdit.PasswordEchoOnEdit | 在編輯時(shí)顯示字符,負(fù)責(zé)顯示密碼類型的輸入 |
參數(shù)3 | 功能 |
---|---|
QIntValidator | 限制輸入整數(shù) |
QDoubleValidator | 限制輸入浮點(diǎn)數(shù) |
QRegexpValidator | 檢查輸入是否符合正則表達(dá)式 |
參數(shù)4 | 功能 |
---|---|
000.000.000.000;_ | ip地址,空白字符是‘_' |
HH:HH:HH:HH:HH:HH; | MAC地址 |
0000-00-00 | 日期,空白字符是空格 |
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# | 許可證號(hào),空白字符是‘_',所有字母都轉(zhuǎn)換為大寫 |
設(shè)置信號(hào)
控件類型 | 信號(hào) | 描述 |
---|---|---|
QLineEdit | selectionChanged | 只要選擇改變了,這個(gè)信號(hào)就會(huì)發(fā)射 |
QLineEdit | textChanged | 當(dāng)修改文本內(nèi)容時(shí),這個(gè)信號(hào)就會(huì)發(fā)射 |
QLineEdit | editingFinished | 當(dāng)編輯文本結(jié)束時(shí),這個(gè)信號(hào)就會(huì)發(fā)射 |
實(shí)例化控件
self.combobox_1 = QComboBox(self) # 普通下拉框(無內(nèi)容)
self.combobox_2 = QFontComboBox(self) # 字體下拉框(有字體選擇)
self.spinbox = QSpinBox(self) # 數(shù)字調(diào)節(jié)框(默認(rèn)范圍0-99)
self.doublespinbox = QDoubleSpinBox(self) # 浮點(diǎn)數(shù)字調(diào)節(jié)框(默認(rèn)范圍0.00-99.99)
設(shè)置信號(hào)
控件類型 | 信號(hào) | 描述 |
---|---|---|
QComboBox | currentIndexChanged | 序號(hào)發(fā)生變化 |
QComboBox | currentTextChanged | 文本發(fā)生變化 |
QSpinBox | valueChanged | 數(shù)字發(fā)生變化 |
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QComboBox | addItem(self.choice) | 添加一個(gè)選項(xiàng) |
QComboBox | addItems(self.choice_list) | 添加多個(gè)選項(xiàng) |
QComboBox | currentIndex() | 獲取當(dāng)前文本序號(hào) |
QComboBox | currentText() | 獲取當(dāng)前文本 |
QComboBox | currentFont() | 獲取當(dāng)前字體 |
QDoubleSpinBox | setDecimals(int) | 設(shè)置小數(shù)位數(shù) |
QSpinBox | setRange(-99, 99) | 設(shè)置范圍 |
QSpinBox | setSingleStep(1) | 設(shè)置步長,即每次點(diǎn)擊遞增或遞減多少值 |
QSpinBox | setValue(66) | 設(shè)置初始顯示值 |
QSpinBox | value() | 獲取值 |
QSpinBox | setValue(value) | 設(shè)置調(diào)節(jié)框的值 |
實(shí)例化控件
self.slider_1 = QSlider(Qt.Horizontal, self) # 水平滑動(dòng)條
self.slider_2 = QSlider(Qt.Vertical, self) # 垂直滑動(dòng)條
self.dial = QDial(self) # 旋鈕
設(shè)置信號(hào)
控件類型 | 信號(hào) | 描述 |
---|---|---|
QSlider | valueChanged | 數(shù)值發(fā)生改變 |
QDial | valueChanged | 改變表盤數(shù)值 |
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QSlider | setRange(0, 100) | 設(shè)置滑動(dòng)條的范圍 |
QSlider | setMinimum(0) | 設(shè)置最小值 |
QSlider | setMaximum(100) | 設(shè)置最大值 |
QSlider | value() | 獲取值 |
QSlider | setValue(value) | 設(shè)置值 |
QDial | setFixedSize(100, 100) | 固定旋鈕的大小 |
QDial | setRange(0, 100) | 設(shè)置表盤數(shù)值范圍 |
QDial | setMinimum(0) | 設(shè)置最小值 |
QDial | setMaximum(100) | 設(shè)置最大值 |
QDial | setNotchesVisible(True) | 顯示刻度 |
實(shí)例化控件
控件類型 | 信號(hào) | 描述 |
---|---|---|
QTimer | timeout | timer.start()結(jié)束時(shí)觸發(fā) |
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QTimer | isActive() | 判斷定時(shí)器是否處于激活狀態(tài) |
QTimer | start(100) | 啟動(dòng)計(jì)時(shí)器持續(xù)100毫秒 |
QTimer | stop() | 停止計(jì)時(shí)器 |
QTimer | setSingleShot(True) | 觸發(fā)timeout信號(hào)后只調(diào)用一次update_func() |
QProgressBar | setMinimum(0) | 設(shè)置最小值 |
QProgressBar | setMaximum(100) | 設(shè)置最大值 |
QProgressBar | setRange(0, 100) | 設(shè)置范圍 |
QProgressBar | setValue(value) | 設(shè)置進(jìn)度條當(dāng)前值 |
QProgressBar | reset() | 重置進(jìn)度條的值 |
實(shí)例化控件
self.lcd = QLCDNumber(self) # 數(shù)字顯示屏
控件方法
控件類型 | 方法 | 描述 |
---|---|---|
QLCDNumber | setDigitCount(10) | 設(shè)置顯示多少位數(shù)字 |
QLCDNumber | display(1234567890) | 顯示數(shù)字 |
QLCDNumber | setSegmentStyle(參數(shù)1) | 設(shè)置顯示屏數(shù)字樣式 |
QLCDNumber | setSmallDecimalPoint(True) | 設(shè)置小數(shù)點(diǎn)的顯示方式,若為True,則占位,若為False,則會(huì)單獨(dú)占位 |
QLCDNumber | display(0.123456789) | 顯示數(shù)字 |
QLCDNumber | display(‘HELLO') | 顯示字母 |
QLCDNumber | setMode(參數(shù)2) | 更改數(shù)字顯示方式 |
參數(shù)1 | 值 | 描述 |
---|---|---|
QLCDNumber.Outline | 0 | 讓內(nèi)容浮顯,其顏色同顯示屏背景顏色相同 |
QLCDNumber.Filled | 1 | 讓內(nèi)容浮顯,顏色同窗口標(biāo)題顏色相同 |
QLCDNumber.Flat | 2 | 讓內(nèi)容扁平化顯示,顏色同窗口標(biāo)題顏色相同 |
參數(shù)2 | 值 | 描述 |
---|---|---|
QLCDNumber.Hex | 0 | 十六進(jìn)制 |
QLCDNumber.Dec | 1 | 十進(jìn)制 |
QLCDNumber.Oct | 2 | 八進(jìn)制 |
QLCDNumber.Bin | 3 | 二進(jìn)制 |
v_layout = QVBoxLayout() # 垂直布局
h_layout = QHBoxLayout() # 水平布局
form_layout = QFormLayout() # 表單布局
grid_layout = QGridLayout() # 網(wǎng)格布局
self.label.setAlignment(Qt.AlignCenter) # 設(shè)置居中方式
h_layout.addStretch(1) # 設(shè)置占位符
v_layout.addWidget(self.user_label) # 垂直布局添加控件
h_layout.addWidget(self.user_line)# 水平布局添加控件
all_v_layout.addLayout(v_layout) # 垂直布局添加垂直布局
all_h_layout.addLayout(h_layout) # 水平布局添加水平布局
form_layout.addRow(self.user_label, self.user_line) # 表單布局添加控件
grid_layout.addWidget(self.user_label, 0, 0, 1, 1) # 網(wǎng)格布局添加控件
grid_layout.addWidget(self.user_label, 0, 0) # 默認(rèn)是1行1列
QGridLayout的addWidget()方法遵循如下語法形式:
addWidget(widget, row, column, rowSpan, columnSpan)
widget就是要添加的控件;row為第幾行,0代表第一行;column為第幾列,0代表第一列;rowSpan表示要讓這個(gè)控件去占用幾行(默認(rèn)一行);columnSpan表示要讓這個(gè)控件去占用幾列(默認(rèn)一列)。
self.setLayout(all_h_layout)
color = QColorDialog.getColor() # 顏色對(duì)話框(十六進(jìn)制的值會(huì)保存在color變量中) if color.isValid(): # 判斷color是否有效 self.text_edit.setTextColor(color) font, ok = QFontDialog.getFont() # 字體對(duì)話框 if ok: self.text_edit.setFont(font)
方法 | 用法 |
---|---|
getItem() | 從下拉框中獲取選項(xiàng)輸入 |
getInt() | 獲取整型值輸入 |
getDouble() | 獲取浮點(diǎn)型值輸入 |
getText() | 獲取字符串輸入 |
getMultiLineText() | 獲取多行字符串輸入 |
實(shí)例:
content, ok = QInputDialog.getText(self, 'title', 'content')
content, ok = QInputDialog.getInt(self, 'title', 'content')
content, ok = QInputDialog.getDouble(self, 'title', 'content')
content, ok = QInputDialog.getMultiLineText(self, 'title', 'content')
Item, ok = QInputDialog.getItem(self, 'title', 'content', list, 0, False)
getItem(parent, str, str, iterable, int, bool)方法需要多設(shè)置幾個(gè)參數(shù),前三個(gè)與getText()相同,第四個(gè)參數(shù)為要加入的選項(xiàng)內(nèi)容,第五個(gè)參數(shù)為最初顯示的選項(xiàng),最后一個(gè)參數(shù)是選項(xiàng)內(nèi)容是否可編輯。
path, _ = QFileDialog.getSaveFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 選擇保存文件
path, _ = QFileDialog.getOpenFileName(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 選擇文件
path, _ = QFileDialog.getOpenFileNames(self, 'title', './', 'Excel Files (*.xlsx;*.xls);;All Files (*)') # 選擇多個(gè)文件
path, _ = QFileDialog.getExistingDirectory(self, 'title', './') # 選擇文件夾
參數(shù):指定父類,文件對(duì)話框的標(biāo)題,對(duì)話框打開時(shí)顯示的路徑,文件擴(kuò)展名過濾器
其中設(shè)置文件擴(kuò)展名過濾,用雙分號(hào)間隔。
'All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)'
def closeEvent(self, QCloseEvent): # 關(guān)閉事件函數(shù) if not self.saved: # 如果未保存 choice = QMessageBox.question(self, '', 'Do you want to save the text?', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel) if choice == QMessageBox.Yes: # 如果需要繼續(xù)保存 self.saved_func() # 調(diào)用函數(shù)進(jìn)行保存 QCloseEvent.accept() # 接受關(guān)閉事件 elif choice == QMessageBox.No: # 如果不需要繼續(xù)保存 QCloseEvent.accept() # 接受關(guān)閉事件 else: QCloseEvent.ignore() # 忽略關(guān)閉事件
以上是“python中pyqt5怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。