溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python圖形開發(fā)GUI庫pyqt5的詳細使用方法及各控件的屬性與方法

發(fā)布時間:2021-10-13 14:20:32 來源:億速云 閱讀:217 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關python圖形開發(fā)GUI庫pyqt5的詳細使用方法及各控件的屬性與方法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

import sysfrom PyQt5.QtGui import *from PyQt5.QtCore import *from PyQt5.QtWidgets import *class Demo(QWidget):  def __init__(self):    super(Demo, self).__init__()    # 設置主界面    # 設置控件    # 設置布局    # 設置信號def main(self):  # 槽函數(shù)if __name__ == '__main__':  app = QApplication(sys.argv)  demo = Demo()  demo.show()  sys.exit(app.exec_())

程序啟動畫面

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') # 設置窗體名稱

self.setWindowIcon('path') # 設置窗體圖標

self.resize(300, 250) # 更改窗體大小

self.size() # 獲取窗體大小

self.width() # 獲取窗體寬度

self.height() # 獲取窗體高度

self.setFixedWidth(int width) # 設置窗體寬度

self.setFixedHeight(int height) # 設置窗體高度

self.setFixedSize(int width, int height) # 設置窗體大小

self.setGeometry(int x, int y, int width, int height) # 設置窗口位置

self.frameGeometry() # 獲取窗口的大小和位置

self.move(int x, int y) # 設置窗口的位置

self.pos() # 獲取窗口左上角坐標

self.setWindowFlags(QtCore.Qt.WindowMinimizeButtonHint) # 禁止最大化按鈕

self.setFixedSize(self.width(), self.height()) # 禁止拉伸窗口大小

二、設置控件

1、QMessageBox消息框

1、基本格式

QMessageBox.information(QWidget, ‘Title', 'Content‘, buttons)

第一個參數(shù)填self,表示該信息框?qū)儆谖覀冞@里的Demo窗口;第二個參數(shù)類型為字符串,填入的是該信息框的標題;第三個參數(shù)類型也是字符串,填入的是信息框的提示內(nèi)容;最后個參數(shù)為信息框上要添加的按鈕。多個按鈕之間用 | 來連接,常見的按鈕種類有以下幾種:

QMessageBox.Ok

QMessageBox.Yes

QMessageBox.No

QMessageBox.Close

QMessageBox.Cancel

QMessage.Open

QMessage.Save

2、各種類型的框

QMessageBox.information消息框QMessageBox.question問答框QMessageBox.warning警告框QMessageBox.critical錯誤框QMessageBox.about關于框

3、與消息框進行交互

choice = QMessageBox.question(self, 'Title', 'Content', QMessageBox.Yes | QMessageBox.No)if choice == QMessageBox.Yes:  passelif choice == QMessageBox.No:pass

2、文本編輯框和文本瀏覽框

實例化控件

self.text_edit = QTextEdit(self) # 文本編輯框

self.text_browser = QTextBrowser(self) # 文本瀏覽框

設置信號

QTextEdittextChanged文本發(fā)生改變

控件方法

QTextEditsetText(‘Content')設置文本QTextEdittoPlainText()獲取文本QTextEditsetTextColor(color)設置文本顏色QTextEditsetFont(font)設置字體

3、各種按鈕

QPushButton,QToolButton,QRadioButton和QCheckBox均繼承自QAbstractButton類

實例化控件

self.test_button = QPushButton('Test', self) # 實例化按鈕

self.test_button = QPushButton('&Download',self) # 實例化按鈕并設置快捷鍵為Alt+D

self.test_button = QToolButton(self) # 工具按鈕(初始不能傳入文本)

self.on_button = QRadioButton('on', self) # 單選按鈕

self.checkbox1 = QCheckBox('Checkbox 1', self) # 復選框的三種狀態(tài):全選中、半選中和無選中

設置信號

通用Pressed當鼠標指針在按鈕上并按下左鍵時觸發(fā)該信號通用Released當鼠標左鍵被釋放時觸發(fā)該信號通用Clicked當鼠標左鍵被按下然后釋放時,或者快捷鍵被釋放時觸發(fā)該信號通用Toggled當按鈕的標記狀態(tài)發(fā)生改變時觸發(fā)該信號QCheckBoxstateChanged復選框狀態(tài)發(fā)生改變

控件方法

通用isDown()提示按鈕是否已按下通用isChecked()提示按鈕是否已經(jīng)標記通用isEnable()提示按鈕是否可以被用戶點擊通用isCheckAble()提示按鈕是否為可標記的通用setAutoRepeat()設置按鈕是否在用戶長按時可以自動重復執(zhí)行通用setShortcut(‘Ctrl+D')設置按鈕快捷鍵QPushButtonsetCheckable(True)設置按鈕是否已經(jīng)被選中,如果設置True,則表示按鈕將保持已點擊和釋放狀態(tài)QPushButtontoggle()在按鈕狀態(tài)之間進行切換QPushButtonsetIcon(QIcon(‘button.png'))設置圖標QPushButtonsetEnabled()設置按鈕是否可以使用,當設置為False時,按鈕變成不可用狀態(tài),點擊它不會發(fā)射信號QPushButtonisChecked()判斷按鈕是否為標記狀態(tài),若是則返回True,不是則返回FalseQPushButtonsetDefault()設置按鈕的默認狀態(tài)QPushButtonsetText(‘text')設置按鈕的顯示文本QPushButtontext()返回按鈕的顯示文本QToolButtonsetArrowType(參數(shù)1)設定button上顯示的箭頭類型QToolButtonsetToolButtonStyle(參數(shù)2)設定button文本和圖標顯示的樣式QRadioButtonsetChecked(True)單選按鈕設為選中狀態(tài)QCheckBoxsetChecked(True)將復選框設為選中或無選中狀態(tài)QCheckBoxsetCheckState(Qt.Checked)選中狀態(tài)Qt.Checked, 無選中狀態(tài)Qt.Unchecked和半選中狀態(tài)Qt.PartiallyCheckedQCheckBoxsetTristate(True)讓一個復選框擁有三種狀態(tài)QCheckBoxsetCheckState(Qt.PartiallyChecked)讓一個復選框擁有三種狀態(tài)QCheckBoxcheckState()獲取當前復選框的狀態(tài),返回值為int類型,0為無選中狀態(tài),1為半選中狀態(tài),2為選中狀態(tài)

Qt.NoArrow無箭頭Qt.UpArrow向上的箭頭Qt.DownArrow向下的箭頭Qt.LeftArrow向左的箭頭Qt.RightArrow向右的箭頭

Qt.ToolButtonIconOnly只顯示圖標Qt.ToolButtonTextOnly只顯示文本Qt.ToolButtonTextBesideIcon文本在圖標下面Qt.ToolButtonTextUnderIcon文本在圖標上面Qt.ToolButtonFollowStyle未知…

4、標簽

實例化控件

self.label = QLabel(self) 

控件方法

QLabelsetPixmap(QPixmap(‘on.png'))給標簽設置圖片QLabelsetAlignment(Qt.AlignCenter)設置標簽對齊方式

5、單行文本框

實例化控件

self.lineedit = QLineEdit(self)

控件方法

QLineEditsetFont(combobox.currentFont())設置字體QLineEditsetPlaceholderText()設置文本框顯示文字QLineEditsetMaxLength()設置文本框所允許輸入的最大字符數(shù)QLineEditsetReadOnly()設置文本為只讀QLineEditsetText()設置文本框的內(nèi)容QLineEdittext()返回文本框的內(nèi)容QLineEditsetDragEnable()設置文本框是否接受拖動QLineEditselectAll()全選QLineEditsetFocus()得到焦點QLineEditsetAlignment(參數(shù)1)按固定值方式對齊文本QLineEditsetEchoMode(參數(shù)2)設置文本框的顯示格式QLineEditsetValidator(參數(shù)3)設置文本框的驗證器(驗證規(guī)則),將限制任意可能輸入的文本QLineEditsetInputMask(參數(shù)4)設置掩碼

Qt.AlignLeft水平方向靠左對齊Qt.AlignRight水平方向靠右對齊Qt.AlignCenter水平方向居中對齊Qt.AlignJustify水平方向調(diào)整間距兩端對齊Qt.AlignTop垂直方向靠上對齊Qt.AlignBottom垂直方向靠下對齊Qt.AlignVCenter垂直方向居中對齊

QLineEdit.Normal正常顯示所輸入的字符,此為默認選項QLineEdit.NoEcho不顯示任何輸入的字符,常用于密碼類型的輸入,且長度保密QLineEdit.Password顯示與平臺相關的密碼掩飾字符,而不是實際輸入的字符QLineEdit.PasswordEchoOnEdit在編輯時顯示字符,負責顯示密碼類型的輸入

QIntValidator限制輸入整數(shù)QDoubleValidator限制輸入浮點數(shù)QRegexpValidator檢查輸入是否符合正則表達式

000.000.000.000;_ip地址,空白字符是‘_'HH:HH:HH:HH:HH:HH;MAC地址0000-00-00日期,空白字符是空格>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#許可證號,空白字符是‘_',所有字母都轉(zhuǎn)換為大寫

設置信號

QLineEditselectionChanged只要選擇改變了,這個信號就會發(fā)射QLineEdittextChanged當修改文本內(nèi)容時,這個信號就會發(fā)射QLineEditeditingFinished當編輯文本結(jié)束時,這個信號就會發(fā)射

6、下拉選擇框和數(shù)字調(diào)節(jié)框

實例化控件

self.combobox_1 = QComboBox(self) # 普通下拉框(無內(nèi)容)

self.combobox_2 = QFontComboBox(self) # 字體下拉框(有字體選擇)

self.spinbox = QSpinBox(self) # 數(shù)字調(diào)節(jié)框(默認范圍0-99)

self.doublespinbox = QDoubleSpinBox(self) # 浮點數(shù)字調(diào)節(jié)框(默認范圍0.00-99.99)

設置信號

QComboBoxcurrentIndexChanged序號發(fā)生變化QComboBoxcurrentTextChanged文本發(fā)生變化QSpinBoxvalueChanged數(shù)字發(fā)生變化

控件方法

QComboBoxaddItem(self.choice)添加一個選項QComboBoxaddItems(self.choice_list)添加多個選項QComboBoxcurrentIndex()獲取當前文本序號QComboBoxcurrentText()獲取當前文本QComboBoxcurrentFont()獲取當前字體QDoubleSpinBoxsetDecimals(int)設置小數(shù)位數(shù)QSpinBoxsetRange(-99, 99)設置范圍QSpinBoxsetSingleStep(1)設置步長,即每次點擊遞增或遞減多少值QSpinBoxsetValue(66)設置初始顯示值QSpinBoxvalue()獲取值QSpinBoxsetValue(value)設置調(diào)節(jié)框的值

7、滑動條和旋鈕

實例化控件

self.slider_1 = QSlider(Qt.Horizontal, self) # 水平滑動條

self.slider_2 = QSlider(Qt.Vertical, self) # 垂直滑動條

self.dial = QDial(self) # 旋鈕

設置信號

QSlidervalueChanged數(shù)值發(fā)生改變QDialvalueChanged改變表盤數(shù)值

控件方法

QSlidersetRange(0, 100)設置滑動條的范圍QSlidersetMinimum(0)設置最小值QSlidersetMaximum(100)設置最大值QSlidervalue()獲取值QSlidersetValue(value)設置值QDialsetFixedSize(100, 100)固定旋鈕的大小QDialsetRange(0, 100)設置表盤數(shù)值范圍QDialsetMinimum(0)設置最小值QDialsetMaximum(100)設置最大值QDialsetNotchesVisible(True)顯示刻度

8、定時器和進度條

實例化控件

QTimertimeouttimer.start()結(jié)束時觸發(fā)

控件方法

QTimerisActive()判斷定時器是否處于激活狀態(tài)QTimerstart(100)啟動計時器持續(xù)100毫秒QTimerstop()停止計時器QTimersetSingleShot(True)觸發(fā)timeout信號后只調(diào)用一次update_func()QProgressBarsetMinimum(0)設置最小值QProgressBarsetMaximum(100)設置最大值QProgressBarsetRange(0, 100)設置范圍QProgressBarsetValue(value)設置進度條當前值QProgressBarreset()重置進度條的值

9、數(shù)字顯示屏

實例化控件

self.lcd = QLCDNumber(self) # 數(shù)字顯示屏

控件方法

QLCDNumbersetDigitCount(10)設置顯示多少位數(shù)字QLCDNumberdisplay(1234567890)顯示數(shù)字QLCDNumbersetSegmentStyle(參數(shù)1)設置顯示屏數(shù)字樣式QLCDNumbersetSmallDecimalPoint(True)設置小數(shù)點的顯示方式,若為True,則占位,若為False,則會單獨占位QLCDNumberdisplay(0.123456789)顯示數(shù)字QLCDNumberdisplay(‘HELLO')顯示字母QLCDNumbersetMode(參數(shù)2)更改數(shù)字顯示方式

QLCDNumber.Outline0讓內(nèi)容浮顯,其顏色同顯示屏背景顏色相同QLCDNumber.Filled1讓內(nèi)容浮顯,顏色同窗口標題顏色相同QLCDNumber.Flat2讓內(nèi)容扁平化顯示,顏色同窗口標題顏色相同

QLCDNumber.Hex0十六進制QLCDNumber.Dec1十進制QLCDNumber.Oct2八進制QLCDNumber.Bin3二進制

三、設置布局

1、實例化布局

v_layout = QVBoxLayout() # 垂直布局

h_layout = QHBoxLayout() # 水平布局

form_layout = QFormLayout() # 表單布局

grid_layout = QGridLayout() # 網(wǎng)格布局

2、給布局添加占位符|控件|布局

self.label.setAlignment(Qt.AlignCenter) # 設置居中方式

h_layout.addStretch(1) # 設置占位符

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) # 默認是1行1列

QGridLayout的addWidget()方法遵循如下語法形式:

addWidget(widget, row, column, rowSpan, columnSpan)

widget就是要添加的控件;row為第幾行,0代表第一行;column為第幾列,0代表第一列;rowSpan表示要讓這個控件去占用幾行(默認一行);columnSpan表示要讓這個控件去占用幾列(默認一列)。

3、設為整個窗口的最終布局方式

self.setLayout(all_h_layout)

四、各種對話框

1、顏色對話框和字體對話框

color = QColorDialog.getColor() # 顏色對話框(十六進制的值會保存在color變量中)if color.isValid(): # 判斷color是否有效self.text_edit.setTextColor(color)font, ok = QFontDialog.getFont() # 字體對話框if ok:self.text_edit.setFont(font)

2、輸入對話框

getItem()從下拉框中獲取選項輸入getInt()獲取整型值輸入getDouble()獲取浮點型值輸入getText()獲取字符串輸入getMultiLineText()獲取多行字符串輸入

實例:

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ù),前三個與getText()相同,第四個參數(shù)為要加入的選項內(nèi)容,第五個參數(shù)為最初顯示的選項,最后一個參數(shù)是選項內(nèi)容是否可編輯。

3、文件對話框

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 (*)') # 選擇多個文件

path, _ = QFileDialog.getExistingDirectory(self, 'title', './') # 選擇文件夾

參數(shù):指定父類,文件對話框的標題,對話框打開時顯示的路徑,文件擴展名過濾器

其中設置文件擴展名過濾,用雙分號間隔。

'All Files (*);;PDF Files (*.pdf);;Text Files (*.txt)'

五、界面關閉事件

def closeEvent(self, QCloseEvent): # 關閉事件函數(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ù)進行保存QCloseEvent.accept()# 接受關閉事件elif choice == QMessageBox.No: # 如果不需要繼續(xù)保存QCloseEvent.accept()# 接受關閉事件else:  QCloseEvent.ignore()# 忽略關閉事件

更多關于python圖形開發(fā)GUI庫pyqt5的使用方法請查看下面的相關鏈接

以上就上有關python圖形開發(fā)GUI庫pyqt5的詳細使用方法及各控件的屬性與方法的全部內(nèi)容,億速云全面介紹編程技術、操作系統(tǒng)、數(shù)據(jù)庫、web前端技術等內(nèi)容。

類型名稱
控件類型信號描述
控件類型方法描述
控件類型信號描述
控件類型方法描述
參數(shù)1箭頭屬性
參數(shù)2樣式
控件類型方法描述
控件類型方法描述
參數(shù)1功能
參數(shù)2功能
參數(shù)3功能
參數(shù)4功能
控件類型信號描述
控件類型信號描述
控件類型方法描述
控件類型信號描述
控件類型方法描述
控件類型信號描述
控件類型方法描述
控件類型方法描述
參數(shù)1描述
參數(shù)2描述
方法用法

以上就是python圖形開發(fā)GUI庫pyqt5的詳細使用方法及各控件的屬性與方法,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI