python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)
引用文章:http://code.py40.com/pyqt5/
文章目錄
- 簡(jiǎn)單的例子:創(chuàng)建一個(gè)小窗口
- 應(yīng)用程序的圖標(biāo)
- 顯示提示語(yǔ)
- 通過(guò)按鈕關(guān)閉窗口
- 消息框(關(guān)閉窗口確認(rèn)框)
- 窗口顯示在屏幕的中間【居中顯示】
簡(jiǎn)單的例子:創(chuàng)建一個(gè)小窗口
PyQt5是一種高級(jí)的語(yǔ)言,下面只有幾行代碼就能顯示一個(gè)小窗口。底層已經(jīng)實(shí)現(xiàn)了窗口的基本功能。
# -*- coding: utf-8 -*- """ @File : test4.py @Time : 2020/4/13 16:57 @Author : Dontla @Email : sxana@qq.com @Software: PyCharm """ # !/usr/bin/python3 # -*- coding: utf-8 -*-import sys# 這里我們提供必要的引用?;究丶挥趐yqt5.qtwidgets模塊中。 from PyQt5.QtWidgets import QApplication, QWidgetif __name__ == '__main__':# 每一pyqt5應(yīng)用程序必須創(chuàng)建一個(gè)應(yīng)用程序?qū)ο?。sys.argv參數(shù)是一個(gè)列表,從命令行輸入?yún)?shù)。app = QApplication(sys.argv)# QWidget部件是pyqt5所有用戶界面對(duì)象的基類。他為QWidget提供默認(rèn)構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)沒(méi)有父類。w = QWidget()# resize()方法調(diào)整窗口的大小。這里是250px寬150px高w.resize(250, 150)# move()方法移動(dòng)窗口在屏幕上的位置到x = 300,y = 300坐標(biāo)。w.move(300, 300)# 設(shè)置窗口的標(biāo)題w.setWindowTitle('Simple')# 顯示在屏幕上w.show()# 系統(tǒng)exit()方法確保應(yīng)用程序干凈的退出# app的exec_()方法有下劃線。因?yàn)閑xec()執(zhí)行是一個(gè)Python關(guān)鍵詞,所以用exec_()代替sys.exit(app.exec_())結(jié)果:
應(yīng)用程序的圖標(biāo)
應(yīng)用程序圖標(biāo)是一個(gè)小的圖像,通常在標(biāo)題欄的左上角顯示。在下面的例子中我們將介紹如何做pyqt5的圖標(biāo)。同時(shí)我們也將介紹一些新方法。
#!/usr/bin/python3 # -*- coding: utf-8 -*-""" py40 PyQt5 tutorialThis example shows an icon in the titlebar of the window.author: Jan Bodnar website: py40.com last edited: January 2015 """import sys from PyQt5.QtWidgets import QApplication, QWidget from PyQt5.QtGui import QIconclass Example(QWidget):def __init__(self):super().__init__()self.initUI() # 界面繪制交給InitUi方法def initUI(self):# 設(shè)置窗口的位置和大小self.setGeometry(300, 300, 300, 220)# 設(shè)置窗口的標(biāo)題self.setWindowTitle('Icon')# 設(shè)置窗口的圖標(biāo),引用當(dāng)前目錄下的web.png圖片self.setWindowIcon(QIcon('timg.jpg'))# 顯示窗口self.show()if __name__ == '__main__':# 創(chuàng)建應(yīng)用程序和對(duì)象app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())軟件圖標(biāo)的ICON還是用帶透明通道的png圖為好
結(jié)果:
Python編程語(yǔ)言支持程序和面向?qū)ο缶幊田L(fēng)格。Pyqt5使用OOP編程。
面向?qū)ο缶幊逃腥齻€(gè)重要的方面:類、變量和方法。這里我們創(chuàng)建一個(gè)新的類為Examle。Example繼承自QWidget類。
顯示提示語(yǔ)
在下面的例子中我們顯示一個(gè)提示語(yǔ)
#!/usr/bin/python3 # -*- coding: utf-8 -*-""" Py40 PyQt5 tutorial This example shows a tooltip on a window and a button.author: Jan Bodnar website: py40.com last edited: January 2015 """import sys from PyQt5.QtWidgets import (QWidget, QToolTip, QPushButton, QApplication) from PyQt5.QtGui import QFont class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):#這種靜態(tài)的方法設(shè)置一個(gè)用于顯示工具提示的字體。我們使用10px滑體字體。QToolTip.setFont(QFont('SansSerif', 10))#創(chuàng)建一個(gè)提示,我們稱之為settooltip()方法。我們可以使用豐富的文本格式self.setToolTip('This is a <b>QWidget</b> widget')#創(chuàng)建一個(gè)PushButton并為他設(shè)置一個(gè)tooltipbtn = QPushButton('Button', self)btn.setToolTip('This is a <b>QPushButton</b> widget')#btn.sizeHint()顯示默認(rèn)尺寸btn.resize(btn.sizeHint())#移動(dòng)窗口的位置btn.move(50, 50) self.setGeometry(300, 300, 300, 200)self.setWindowTitle('Tooltips') self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())結(jié)果:
通過(guò)按鈕關(guān)閉窗口
關(guān)閉一個(gè)窗口可以點(diǎn)擊標(biāo)題欄上的X。在下面的例子中,我們將展示我們?nèi)绾瓮ㄟ^(guò)編程來(lái)關(guān)閉窗口。
#!/usr/bin/python3 # -*- coding: utf-8 -*-""" Py40 PyQt5 tutorialThis program creates a quit button. When we press the button, the application terminates.author: Jan Bodnar website: py40.com last edited: January 2015 """import sys from PyQt5.QtWidgets import QWidget, QPushButton, QApplication from PyQt5.QtCore import QCoreApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 250, 150)self.setWindowTitle('Quit button')qbtn = QPushButton('Quit、Quit、Quit\n退出、退出、退出', self)# Dontla 20200414 將按鈕綁定退出?qbtn.clicked.connect(QCoreApplication.instance().quit)qbtn.resize(qbtn.sizeHint())qbtn.move(50, 50)self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())結(jié)果:
消息框(關(guān)閉窗口確認(rèn)框)
默認(rèn)情況下,如果我們單擊x按鈕窗口就關(guān)門了。有時(shí)我們想修改這個(gè)默認(rèn)的行為。例如我們?cè)诰庉嬈髦行薷牧艘粋€(gè)文件,當(dāng)關(guān)閉他的時(shí)候,我們顯示一個(gè)消息框確認(rèn)。
#!/usr/bin/python3 # -*- coding: utf-8 -*-""" ZetCode PyQt5 tutorialThis program shows a confirmation message box when we click on the close button of the application window.author: Jan Bodnar website: zetcode.com last edited: January 2015 """import sys from PyQt5.QtWidgets import QWidget, QMessageBox, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 250, 150)self.setWindowTitle('Message box')self.show()def closeEvent(self, event):# Dontla 20200414 最后一個(gè)參數(shù)是默認(rèn)高亮的選擇項(xiàng)reply = QMessageBox.question(self, 'Message',"Are you sure to quit?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())結(jié)果:
我們關(guān)閉窗口的時(shí)候,觸發(fā)了QCloseEvent。我們需要重寫closeEvent()事件處理程序。
我們顯示一個(gè)消息框,兩個(gè)按鈕:“是”和“不是”。第一個(gè)字符串出現(xiàn)在titlebar。第二個(gè)字符串消息對(duì)話框中顯示的文本。第三個(gè)參數(shù)指定按鈕的組合出現(xiàn)在對(duì)話框中。最后一個(gè)參數(shù)是默認(rèn)按鈕,這個(gè)是默認(rèn)的按鈕焦點(diǎn)。
我們處理返回值,如果單擊Yes按鈕,關(guān)閉小部件并終止應(yīng)用程序。否則我們忽略關(guān)閉事件。
窗口顯示在屏幕的中間【居中顯示】
下面的腳本顯示了如何在屏幕中心顯示窗口。
#!/usr/bin/python3 # -*- coding: utf-8 -*-""" Py40 PyQt5 tutorialThis program centers a window on the screen.author: Jan Bodnar website: py40.com last edited: January 2015 """import sys from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# Dontla 20200414 不像setGeometry()函數(shù)那樣指定位置和長(zhǎng)寬,這個(gè)只指定長(zhǎng)寬self.resize(250, 150)self.center()self.setWindowTitle('Center')self.show()# 控制窗口顯示在屏幕中心的方法def center(self):# 獲得窗口qr = self.frameGeometry()# print(qr) # PyQt5.QtCore.QRect(0, 0, 249, 149)# 獲得屏幕中心點(diǎn)cp = QDesktopWidget().availableGeometry().center()# print(cp) # PyQt5.QtCore.QPoint(682, 363)# 顯示到屏幕中心qr.moveCenter(cp)# Dontla 20200414 不懂這句跟上面那句啥區(qū)別?意思?# self.move(qr.topLeft()) # origin# print(qr.topLeft()) # PyQt5.QtCore.QPoint(558, 289)if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())結(jié)果:
QtGui,QDesktopWidget類提供了用戶的桌面信息,包括屏幕大小。
總結(jié)
以上是生活随笔為你收集整理的python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python PyQt5中文教程☞【第一
- 下一篇: python PyQt5 sizeHin