第二课 PyQt5编常见主窗口和相关控件使用
tags:
- python
- 网易云课堂
categories:
- pyqt5
- 主窗口
- 屏幕坐标系
- 图标
- 空件提示
文章目录
第一节 Python操作窗口控件
1. 主窗口创建
- 主窗口类型有3种窗口:QMainWindow、QWidget、QDialog
- QMainWindow:可以包含菜单栏、工具栏、状态栏和标题栏,是最常见的窗口形式
- QDialog:是对话窗口的基类。没有菜单栏、工具栏、状态栏。
- QWidget:不确定窗口的用途,就使用QWidget.
- pyqt5图标下载:https://www.easyicon.net
2. 窗口居中显示
- 获取屏幕的坐标系:QDesktopWidget
- 获取窗口左标系:size = self.geometry()
- 计算左边移动距离:newLeft = (screen.width() - size.width()) / 2
- 计算右边移动距离:newTop = (screen.height() - size.height()) / 2
- 移动:self.move(newLeft, newTop)
3. 窗口的退出
- app = QApplication.instance()
- app.quit()
# firstMianwin.py
import sys
from PyQt5.QtWidgets import QDesktopWidget, QMainWindow, QApplication, QHBoxLayout,QPushButton, QWidget
# 专门添加图标的库
from PyQt5.QtGui import QIcon
class FirstMainWin(QMainWindow):
def __init__(self, parent=None):
super(FirstMainWin, self).__init__(parent)
self.initUI()
def initUI(self):
# 设置主窗口的标题
self.setWindowTitle("这是我的第一个主窗口!")
# 设置主窗口的尺寸
self.resize(400, 300)
# 状态栏的设置
self.status = self.statusBar()
self.status.showMessage("只存在5秒", 5000)
# 添加Button
self.button1 = QPushButton('退出应用程序')
# 将信号与槽关联
self.button1.clicked.connect(self.onClick_Button)
# button放到水平布局layout上
layout = QHBoxLayout()
layout.addWidget(self.button1)
# layout放到主框架Qwidget上
mainFrame = QWidget()
mainFrame.setLayout(layout)
# 主框架放到整个窗口上
self.setCentralWidget(mainFrame)
def center(self):
# 获取屏幕坐标系
screen = QDesktopWidget().screenGeometry()
# 获取窗口坐标系
size = self.geometry()
newLeft = (screen.width() - size.width()) / 2
newTop = (screen.height() - size.height()) / 2
self.move(newLeft, newTop)
# 按钮单击事件的方法(自定义的槽)
def onClick_Button(self):
# 获取信号对象的
sender = self.sender()
print(sender.text() + ' 按钮被按下')
app = QApplication.instance()
# 退出应用程序
app.quit()
if __name__ == "__main__":
app = QApplication(sys.argv)
# 这种写法只能在window下设置图标,mac上是没有的(有应用程序图标)
app.setWindowIcon(QIcon("./images/cartoon1.ico"))
main = FirstMainWin()
main.center()
main.show()
sys.exit(app.exec_())
第二节 屏幕坐标系
- 以左上角建立坐标系。
import sys
from PyQt5.QtWidgets import QHBoxLayout, QMainWindow, QApplication, QPushButton, QWidget
def onClick_Button():
print("1")
print("widget.x() = %d" % widget.x()) # 250 (窗口横坐标)
print("widget.y() = %d" % widget.y()) # 200 (窗口纵坐标)
print("widget.width() = %d" % widget.width()) # 300(工作区宽度)
print("widget.height() = %d" % widget.height()) # 240 (工作区高度)
print("2")
print("widget.geometry().x() = %d" % widget.geometry().x()) # 250 (工作区横坐标)
print("widget.geometry().y() = %d" % widget.geometry().y()) # 222 (工作区纵坐标)
print("widget.geometry().width() = %d" % widget.geometry().width()) # 300(工作区宽度)
print("widget.geometry().height() = %d" % widget.geometry().height()) # 240 (工作区高度)
print("3")
print("widget.frameGeometry().x() = %d" % widget.frameGeometry().x()) # 250 (窗口横坐标)
print("widget.frameGeometry().y() = %d" % widget.frameGeometry().y()) # 200 (窗口纵坐标)
print("widget.frameGeometry().width() = %d" % widget.frameGeometry().width()) # 300(窗口宽度)
print("widget.frameGeometry().height() = %d" % widget.frameGeometry().height()) # 262(窗口高度)
app = QApplication(sys.argv)
widget = QWidget()
btn = QPushButton(widget)
btn.setText("按钮")
btn.clicked.connect(onClick_Button)
btn.move(24, 52)
widget.resize(300, 240) # 设置工作区的尺寸
widget.move(250, 200)
widget.setWindowTitle('屏幕坐标系')
widget.show()
sys.exit(app.exec_())
第三节 设置控件提示信息
- 设置控件提示信息QToolTip
# 显示控件提示消息
import sys
from PyQt5.QtWidgets import QHBoxLayout, QMainWindow, QApplication, QToolTip, QPushButton, QWidget
from PyQt5.QtGui import QFont
class TooltipForm(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置字体,大小
QToolTip.setFont(QFont('SansSerif', 12))
self.setToolTip('今天是<b>星期五</b>')
self.setGeometry(300, 30, 200, 300)
self.setWindowTitle('设置控件提示消息')
self.button1 = QPushButton('我的按钮')
self.button1.setToolTip('这是一个按钮,Are you ok?')
layout = QHBoxLayout()
layout.addWidget(self.button1)
mainFrame = QWidget()
mainFrame.setLayout(layout)
self.setCentralWidget(mainFrame)
if __name__ == '__main__':
app = QApplication(sys.argv)
main = TooltipForm()
main.show()
sys.exit(app.exec_())
第四节 设置图标
- 窗口的setWindowIcon方法用于设置窗口的图标,只在Windows中可用
- QAplication中的setWindowIcon方法用于设置主窗口的图标和应用程序图标, 但调用了窗口的setWindowIcon方法QAplication中的setWindowIcon方法就只能用于设置应用程序图标了
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon
class IconForm(QMainWindow):
def __init__(self):
super(IconForm,self).__init__()
self.initUI()
def initUI(self):
self.setGeometry(300, 300, 250, 250)
# 设置主窗口的标题
self.setWindowTitle('设置窗口图标')
# 设置窗口图标
self.setWindowIcon(QIcon('../images/cartoon1.ico'))
if __name__ == '__main__':
app = QApplication(sys.argv)
#app.setWindowIcon(QIcon('./images/cartoon1.ico'))
main = IconForm()
main.show()
sys.exit(app.exec_())