早就知道PyQt的强大,正好需要学GUI,开好多网上课程并没有有关pyqt的讲解,基本上用的要么是wxpython要么是tk,其实pyQt也很厉害,所以,学习pyqt只能借助博客了,
下面是初试pyQt的代码
import sys
from PyQt5.QtWidgets import QApplication,QToolTip,QPushButton,QMessageBox,QTextEdit,QAction,qApp,QMainWindow
from PyQt5.QtGui import QFont,QIcon
from PyQt5.QtCore import QCoreApplication
'''QApplication 应用对象 QWidgets 申请基本窗体空间 QToolTip 创建窗体组件提示窗 QPushButton 按钮 QIcon图片 QAction 事件,'''
class Frame(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont("SansSerif",11))#设置提示框的字体
self.setToolTip('这是窗体')
#创建一个文本框
text = QTextEdit()
self.setCentralWidget(text)
#QAction是一个抽象类,可以通过菜单栏,工具栏,或者快捷键实现,
#以下代码实现了带有图标和Exit的菜单的创建,同时设置了执行命令的快捷键以及鼠标悬停在这个菜单上的提示信息
exitAct = QAction(QIcon('exit.ico'),'Exit',self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('Press and quit')
#执行此动作时,发射一个triggered信号,这个信号和quit连接,执行相关事件
exitAct.triggered.connect(qApp.quit)
#创建菜单栏,附加一个名为File的菜单,然后把之前创建的exitAct添加到file这个菜单中
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct)
#添加工具栏,状态栏 并为工具栏中的组件添加事件
self.statusBar()
tbar = self.addToolBar('Exit')
tbar.addAction(exitAct)
#创建两个按钮对象
qbtn = QPushButton("退出",self)
qbtn.setToolTip('退出程序')#设置鼠标悬停出现的提示信息
qbtn.resize(qbtn.sizeHint())#设置按钮大小为默认的
qbtn.move(220,360)#设置按钮出现的位置
qbtn.clicked.connect(QCoreApplication.instance().quit)#为按钮添加事件机制
self.setGeometry(200,300,300,400)#设置窗口出现的位置以及窗口的宽和高
self.setWindowTitle("小坤窗口")
self.show()
#该方法主要是关闭窗口时弹出对话框,让用户确认是否关闭
def closeEvent(self, event):
#其中参数分别为 对话框标题 对话框消息 对话框选项(两个选项),默认选项
reply = QMessageBox.question(self,u'退出页面',u'你确定要退出页面么?',QMessageBox.Yes | QMessageBox.No,QMessageBox.No)
if reply == QMessageBox.No:
event.ignore()
else:
event.accept()
if __name__ == "__main__":
app = QApplication(sys.argv)# 创建一个应用对象 ,sys.argv 是提供对脚本控制功能的参数
#实例化对象
ex = Frame()
#结束应用的主循环,主循环是从窗口系统中接受时间并快速的法网应用窗口,调用exit()方法或者主窗口关闭时,主循环结束
#sys.exec_()方法是确保关闭干净
sys.exit(app.exec_())
有一点小问题就是在macOS平台下运行,看不到菜单栏,在网上找好长时间,有个解释说是菜单栏在屏幕顶部菜单栏中,可是我始终没有找到,这点好像对mac用户挺不友好的,希望有大佬能帮我解决此问题。
另外,为了加强学习,在网上找了pyqt的学习相关文档
https://pythonprogramminglanguage.com/pyqt-menu/
以下是在上面摘抄的有关菜单栏的相关内容