PyQt5快速入门---QyQt 1
申明
学习资料来源于https://download.****.net/download/l1505624/9627827
感谢作者
设置窗口
首先导入sys宏包,这是为了接收sys.args参数。
定义MyWidget类,继承自QWidget类,这里是是通过swtGeometry方法调整窗口,后面可以用resize的方法调整
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(0,0,800,800)
self.setWindowTitle("Maapp")
self.setWindowIcon(QIcon \
("E:\py_code\作业\第三次作业\mm.jpg"))
myapp=QApplication(sys.argv)
mywidget=MyWidget()
mywidget.show()
sys.exit(myapp.exec_())
弹出提示信息
self.setToolTip("看什么看")
QToolTip.setFont(QFont("微软雅黑",12))
来设置信息和字体。
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Mywindget(QWidget):
def __init__(self):
super().__init__()
self.resize(800,600)
self.setWindowTitle("myapp")
self.setWindowIcon(QIcon("E:\py_code\作业\第三次作业\mm.jpg"))
self.setToolTip("看什么看")
QToolTip.setFont(QFont("微软雅黑",12))
#
myapp=QApplication(sys.argv)
mywindge=Mywindget()
mywindge.show()
sys.exit(myapp.exec_())
鼠标放上去一段时间就能显示信息
关闭时询问窗口
定义closeEvent类,接收event,用QMessageBos来设置询问窗口和接受确认信息。
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Mywindget(QWidget):
def __init__(self):
super().__init__()
self.resize(800,600)
self.setWindowTitle("myapp")
self.setWindowIcon(QIcon("E:\py_code\作业\第三次作业\mm.jpg"))
self.setToolTip("看什么看")
QToolTip.setFont(QFont("微软雅黑",12))
def closeEvent(self, event):
reply = QMessageBox.question(self, "信息", "你确定要退出吗",
QMessageBox.Yes, QMessageBox.No)
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
myapp=QApplication(sys.argv)
mywindge=Mywindget()
mywindge.show()
sys.exit(myapp.exec_())
窗体居中显示
核心代码
def center(self):
screen=QDesktopWidget().screenGeometry()
size=self.geometry()
self.move((screen.width()-size.width())/2,
(screen.height()-size.height()/2))
QDesktopWidget().screenGeometry() 这个得到的时屏幕的大小
size=self.geometry() 这个得到的是窗体大小。
self.move((screen.width()-size.width())/2,
(screen.height()-size.height()/2)) 这是居中操作
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Mywidget(QWidget):
def __init__(self):
super().__init__()
self.resize(800,600)
self.center()
self.setWindowTitle("我的第一个app")
self.setWindowIcon(QIcon\
("E:\py_code\作业\第三次作业\mm.jpg"))
self.setToolTip("想知道什么")
QToolTip.setFont(QFont\
("微软雅黑",12))
def closeEvent(self, event):
reply=QMessageBox.question\
(self,"信息",
"你确定要离开吗",
QMessageBox.Yes,QMessageBox.No)
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
def center(self):
screen=QDesktopWidget().screenGeometry()
size=self.geometry()
self.move((screen.width()-size.width())/2,
(screen.height()-size.height())/2)
myapp=QApplication(sys.argv)
mywidget=Mywidget()
mywidget.show()
sys.exit(myapp.exec_())
QMainQWindow类
QtGui.QMainWindow类提供应用程序主窗口,可以创建一个经典的拥有状态栏,工具栏和菜单栏的应用程序骨架。
我们前面的例子使用的都是QtGui.QWidget类创建的窗体。
QtGui.QWidget在qt中是所有可画类的基础,任何基于QWidget类都可以作为独立的窗口显示出来二不需要parent
QMainWindow类是针对主窗体的一般需求设定的,它预定了菜单状态栏和其他widget(窗口小部件)。因为它继承自Qwidget,前面所有的属性修改都适用于它。
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Mywidget(QMainWindow):
def __init__(self):
super().__init__()
self.resize(800,600)
self.center()
self.setWindowTitle("我的第一个app")
self.setWindowIcon(QIcon\
("E:\py_code\作业\第三次作业\mm.jpg"))
self.setToolTip("想知道什么")
QToolTip.setFont(QFont\
("微软雅黑",12))
def closeEvent(self, event):
reply=QMessageBox.question\
(self,"信息",
"你确定要离开吗",
QMessageBox.Yes,QMessageBox.No)
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
def center(self):
screen=QDesktopWidget().screenGeometry()
size=self.geometry()
self.move((screen.width()-size.width())/2,
(screen.height()-size.height())/2)
myapp=QApplication(sys.argv)
mywidget=Mywidget()
mywidget.show()
sys.exit(myapp.exec_())
把继承的类换掉之后运行良好。
加上状态栏
在初始化方法里加上一个self.statusBar().showMessage(“程序已经就绪”)。
也可以在下面写
import sys
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Mywidget(QMainWindow):
def __init__(self):
super().__init__()
self.resize(800,600)
self.center()
self.setWindowTitle("我的第一个app")
self.setWindowIcon(QIcon\
("E:\py_code\作业\第三次作业\mm.jpg"))
self.setToolTip("想知道什么")
QToolTip.setFont(QFont\
("微软雅黑",12))
self.statusBar().showMessage("程序已经就绪")
def closeEvent(self, event):
reply=QMessageBox.question\
(self,"信息",
"你确定要离开吗",
QMessageBox.Yes,QMessageBox.No)
if reply==QMessageBox.Yes:
event.accept()
else:
event.ignore()
def center(self):
screen=QDesktopWidget().screenGeometry()
size=self.geometry()
self.move((screen.width()-size.width())/2,
(screen.height()-size.height())/2)
myapp=QApplication(sys.argv)
mywidget=Mywidget()
mywidget.show()
sys.exit(myapp.exec_())