溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中pyqt5怎么用

發(fā)布時(shí)間:2021-08-12 11:40:50 來源:億速云 閱讀:222 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要為大家展示了“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_()) # 原有

一、設(shè)置主界面

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()) # 禁止拉伸窗口大小

二、設(shè)置控件

1、QMessageBox消息框

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

2、各種類型的框

類型名稱
QMessageBox.information消息框
QMessageBox.question問答框
QMessageBox.warning警告框
QMessageBox.critical錯(cuò)誤框
QMessageBox.about關(guān)于框

3、與消息框進(jìn)行交互

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

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

實(shí)例化控件

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

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

設(shè)置信號(hào)

控件類型信號(hào)描述
QTextEdittextChanged文本發(fā)生改變

控件方法

控件類型方法描述
QTextEditsetText(‘Content')設(shè)置文本
QTextEdittoPlainText()獲取文本
QTextEditsetTextColor(color)設(shè)置文本顏色
QTextEditsetFont(font)設(shè)置字體

3、各種按鈕

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)
QCheckBoxstateChanged復(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è)置按鈕快捷鍵
QPushButtonsetCheckable(True)設(shè)置按鈕是否已經(jīng)被選中,如果設(shè)置True,則表示按鈕將保持已點(diǎn)擊和釋放狀態(tài)
QPushButtontoggle()在按鈕狀態(tài)之間進(jìn)行切換
QPushButtonsetIcon(QIcon(‘button.png'))設(shè)置圖標(biāo)
QPushButtonsetEnabled()設(shè)置按鈕是否可以使用,當(dāng)設(shè)置為False時(shí),按鈕變成不可用狀態(tài),點(diǎn)擊它不會(huì)發(fā)射信號(hào)
QPushButtonisChecked()判斷按鈕是否為標(biāo)記狀態(tài),若是則返回True,不是則返回False
QPushButtonsetDefault()設(shè)置按鈕的默認(rèn)狀態(tài)
QPushButtonsetText(‘text')設(shè)置按鈕的顯示文本
QPushButtontext()返回按鈕的顯示文本
QToolButtonsetArrowType(參數(shù)1)設(shè)定button上顯示的箭頭類型
QToolButtonsetToolButtonStyle(參數(shù)2)設(shè)定button文本和圖標(biāo)顯示的樣式
QRadioButtonsetChecked(True)單選按鈕設(shè)為選中狀態(tài)
QCheckBoxsetChecked(True)將復(fù)選框設(shè)為選中或無選中狀態(tài)
QCheckBoxsetCheckState(Qt.Checked)選中狀態(tài)Qt.Checked, 無選中狀態(tài)Qt.Unchecked和半選中狀態(tài)Qt.PartiallyChecked
QCheckBoxsetTristate(True)讓一個(gè)復(fù)選框擁有三種狀態(tài)
QCheckBoxsetCheckState(Qt.PartiallyChecked)讓一個(gè)復(fù)選框擁有三種狀態(tài)
QCheckBoxcheckState()獲取當(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未知…

4、標(biāo)簽

實(shí)例化控件

self.label = QLabel(self) 

控件方法

控件類型方法描述
QLabelsetPixmap(QPixmap(‘on.png'))給標(biāo)簽設(shè)置圖片
QLabelsetAlignment(Qt.AlignCenter)設(shè)置標(biāo)簽對(duì)齊方式

5、單行文本框

實(shí)例化控件

self.lineedit = QLineEdit(self)

控件方法

控件類型方法描述
QLineEditsetFont(combobox.currentFont())設(shè)置字體
QLineEditsetPlaceholderText()設(shè)置文本框顯示文字
QLineEditsetMaxLength()設(shè)置文本框所允許輸入的最大字符數(shù)
QLineEditsetReadOnly()設(shè)置文本為只讀
QLineEditsetText()設(shè)置文本框的內(nèi)容
QLineEdittext()返回文本框的內(nèi)容
QLineEditsetDragEnable()設(shè)置文本框是否接受拖動(dòng)
QLineEditselectAll()全選
QLineEditsetFocus()得到焦點(diǎn)
QLineEditsetAlignment(參數(shù)1)按固定值方式對(duì)齊文本
QLineEditsetEchoMode(參數(shù)2)設(shè)置文本框的顯示格式
QLineEditsetValidator(參數(shù)3)設(shè)置文本框的驗(yàn)證器(驗(yàn)證規(guī)則),將限制任意可能輸入的文本
QLineEditsetInputMask(參數(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)描述
QLineEditselectionChanged只要選擇改變了,這個(gè)信號(hào)就會(huì)發(fā)射
QLineEdittextChanged當(dāng)修改文本內(nèi)容時(shí),這個(gè)信號(hào)就會(huì)發(fā)射
QLineEditeditingFinished當(dāng)編輯文本結(jié)束時(shí),這個(gè)信號(hào)就會(huì)發(fā)射

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

實(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)描述
QComboBoxcurrentIndexChanged序號(hào)發(fā)生變化
QComboBoxcurrentTextChanged文本發(fā)生變化
QSpinBoxvalueChanged數(shù)字發(fā)生變化

控件方法

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

7、滑動(dòng)條和旋鈕

實(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)描述
QSlidervalueChanged數(shù)值發(fā)生改變
QDialvalueChanged改變表盤數(shù)值

控件方法

控件類型方法描述
QSlidersetRange(0, 100)設(shè)置滑動(dòng)條的范圍
QSlidersetMinimum(0)設(shè)置最小值
QSlidersetMaximum(100)設(shè)置最大值
QSlidervalue()獲取值
QSlidersetValue(value)設(shè)置值
QDialsetFixedSize(100, 100)固定旋鈕的大小
QDialsetRange(0, 100)設(shè)置表盤數(shù)值范圍
QDialsetMinimum(0)設(shè)置最小值
QDialsetMaximum(100)設(shè)置最大值
QDialsetNotchesVisible(True)顯示刻度

8、定時(shí)器和進(jìn)度條

實(shí)例化控件

控件類型信號(hào)描述
QTimertimeouttimer.start()結(jié)束時(shí)觸發(fā)

控件方法

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

9、數(shù)字顯示屏

實(shí)例化控件

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

控件方法

控件類型方法描述
QLCDNumbersetDigitCount(10)設(shè)置顯示多少位數(shù)字
QLCDNumberdisplay(1234567890)顯示數(shù)字
QLCDNumbersetSegmentStyle(參數(shù)1)設(shè)置顯示屏數(shù)字樣式
QLCDNumbersetSmallDecimalPoint(True)設(shè)置小數(shù)點(diǎn)的顯示方式,若為True,則占位,若為False,則會(huì)單獨(dú)占位
QLCDNumberdisplay(0.123456789)顯示數(shù)字
QLCDNumberdisplay(‘HELLO')顯示字母
QLCDNumbersetMode(參數(shù)2)更改數(shù)字顯示方式
參數(shù)1描述
QLCDNumber.Outline0讓內(nèi)容浮顯,其顏色同顯示屏背景顏色相同
QLCDNumber.Filled1讓內(nèi)容浮顯,顏色同窗口標(biāo)題顏色相同
QLCDNumber.Flat2讓內(nèi)容扁平化顯示,顏色同窗口標(biāo)題顏色相同
參數(shù)2描述
QLCDNumber.Hex0十六進(jìn)制
QLCDNumber.Dec1十進(jìn)制
QLCDNumber.Oct2八進(jìn)制
QLCDNumber.Bin3二進(jìn)制

三、設(shè)置布局

1、實(shí)例化布局

v_layout = QVBoxLayout() # 垂直布局

h_layout = QHBoxLayout() # 水平布局

form_layout = QFormLayout() # 表單布局

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

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

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)一列)。

3、設(shè)為整個(gè)窗口的最終布局方式

self.setLayout(all_h_layout)

四、各種對(duì)話框

1、顏色對(duì)話框和字體對(duì)話框

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)

2、輸入對(duì)話框

方法用法
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)容是否可編輯。

3、文件對(duì)話框

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)'

五、界面關(guān)閉事件

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è)資訊頻道!

向AI問一下細(xì)節(jié)

免責(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)容。

AI