第二课 PyQt5编常见主窗口和相关控件使用

第二课 PyQt5编常见主窗口和相关控件使用

tags:

  • python
  • 网易云课堂

categories:

  • pyqt5
  • 主窗口
  • 屏幕坐标系
  • 图标
  • 空件提示

第一节 Python操作窗口控件

1. 主窗口创建

  1. 主窗口类型有3种窗口:QMainWindow、QWidget、QDialog
  2. QMainWindow:可以包含菜单栏、工具栏、状态栏和标题栏,是最常见的窗口形式
  3. QDialog:是对话窗口的基类。没有菜单栏、工具栏、状态栏。
  4. QWidget:不确定窗口的用途,就使用QWidget.
  5. pyqt5图标下载:https://www.easyicon.net

2. 窗口居中显示

  1. 获取屏幕的坐标系:QDesktopWidget
  2. 获取窗口左标系:size = self.geometry()
  3. 计算左边移动距离:newLeft = (screen.width() - size.width()) / 2
  4. 计算右边移动距离:newTop = (screen.height() - size.height()) / 2
  5. 移动:self.move(newLeft, newTop)

3. 窗口的退出

  1. app = QApplication.instance()
  2. 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_())

第二节 屏幕坐标系

  1. 以左上角建立坐标系。
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_())

第三节 设置控件提示信息

  1. 设置控件提示信息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_())

第四节 设置图标

  1. 窗口的setWindowIcon方法用于设置窗口的图标,只在Windows中可用
  2. 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_())
发布了61 篇原创文章 · 获赞 8 · 访问量 2825

猜你喜欢

转载自blog.csdn.net/aa18855953229/article/details/103839240