From 5613f79151f774918edc7e97f1fcdcffdc055ea4 Mon Sep 17 00:00:00 2001
From: DC_DC <3284155190@qq.com>
Date: Fri, 1 Mar 2024 14:06:22 +0800
Subject: [PATCH] initial commit
---
QT/PyQt/.idea/.gitignore | 8 +++
QT/PyQt/.idea/PyQt.iml | 8 +++
.../inspectionProfiles/Project_Default.xml | 18 ++++++
.../inspectionProfiles/profiles_settings.xml | 6 ++
QT/PyQt/.idea/misc.xml | 7 +++
QT/PyQt/.idea/modules.xml | 8 +++
QT/PyQt/1. 第一个QT程序.py | 29 ++++++++++
QT/PyQt/2. 居中显示窗口.py | 32 +++++++++++
QT/PyQt/3. QMainWindow主要内容.py | 54 ++++++++++++++++++
QT/PyQt/4. 多页面切换实例.py | 40 +++++++++++++
QT/PyQt/Photos/img.png | Bin 0 -> 4020 bytes
11 files changed, 210 insertions(+)
create mode 100644 QT/PyQt/.idea/.gitignore
create mode 100644 QT/PyQt/.idea/PyQt.iml
create mode 100644 QT/PyQt/.idea/inspectionProfiles/Project_Default.xml
create mode 100644 QT/PyQt/.idea/inspectionProfiles/profiles_settings.xml
create mode 100644 QT/PyQt/.idea/misc.xml
create mode 100644 QT/PyQt/.idea/modules.xml
create mode 100644 QT/PyQt/1. 第一个QT程序.py
create mode 100644 QT/PyQt/2. 居中显示窗口.py
create mode 100644 QT/PyQt/3. QMainWindow主要内容.py
create mode 100644 QT/PyQt/4. 多页面切换实例.py
create mode 100644 QT/PyQt/Photos/img.png
diff --git a/QT/PyQt/.idea/.gitignore b/QT/PyQt/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/QT/PyQt/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/QT/PyQt/.idea/PyQt.iml b/QT/PyQt/.idea/PyQt.iml
new file mode 100644
index 0000000..f571432
--- /dev/null
+++ b/QT/PyQt/.idea/PyQt.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/QT/PyQt/.idea/inspectionProfiles/Project_Default.xml b/QT/PyQt/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..1b787d6
--- /dev/null
+++ b/QT/PyQt/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/QT/PyQt/.idea/inspectionProfiles/profiles_settings.xml b/QT/PyQt/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/QT/PyQt/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/QT/PyQt/.idea/misc.xml b/QT/PyQt/.idea/misc.xml
new file mode 100644
index 0000000..db8786c
--- /dev/null
+++ b/QT/PyQt/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/QT/PyQt/.idea/modules.xml b/QT/PyQt/.idea/modules.xml
new file mode 100644
index 0000000..b32bc4c
--- /dev/null
+++ b/QT/PyQt/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/QT/PyQt/1. 第一个QT程序.py b/QT/PyQt/1. 第一个QT程序.py
new file mode 100644
index 0000000..49d532e
--- /dev/null
+++ b/QT/PyQt/1. 第一个QT程序.py
@@ -0,0 +1,29 @@
+#!D:\Python311\python.exe
+# -*- coding: utf-8 -*-
+# @Time : 2024/2/26 13:02
+# @Author : DC_DC
+"""# 打印版本信息
+from PyQt6.QtCore import PYQT_VERSION_STR, QT_VERSION_STR
+print(QT_VERSION_STR)
+print(PYQT_VERSION_STR)"""
+
+import sys # 处理python解释器和系统的交互
+from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel
+from PyQt6.QtGui import QIcon # 设置窗口的图标
+
+
+def main():
+ app = QApplication(sys.argv) # 创建一个QApplication对象,用于管理GUI应用程序的控制流和主事件循环
+ window = QMainWindow() # 创建一个QMainWindow对象,这是程序的主窗口
+ window.setGeometry(500, 500, 300, 200) # 设置窗口的集合属性,即窗口在屏幕上的位置大小
+ window.setWindowTitle("DC_DC") # 设置窗口标题
+ window.setWindowIcon(QIcon('Photos/img.png')) # 设置窗口图标
+ QLabel("Hello, World!", window) # 创建一个QLabel对象,并将其添加到主窗口中
+ window.show() # 显示主窗口
+ sys.exit(app.exec()) # 调用QApplication对象的exec()方法,进入GUI应用程序的主事件循环,sys.exit()则确保程序在退出事件循环侯正确地退出,并返回一个退出码0
+
+
+if __name__ == "__main__":
+ main()
+
+pass
diff --git a/QT/PyQt/2. 居中显示窗口.py b/QT/PyQt/2. 居中显示窗口.py
new file mode 100644
index 0000000..f5474bf
--- /dev/null
+++ b/QT/PyQt/2. 居中显示窗口.py
@@ -0,0 +1,32 @@
+#!D:\Python311\python.exe
+# -*- coding: utf-8 -*-
+# @Time : 2024/2/26 13:34
+# @Author : DC_DC
+import sys
+from PyQt6.QtWidgets import QApplication, QWidget, QLabel
+from PyQt6.QtGui import QGuiApplication
+from PyQt6.QtGui import QIcon
+
+
+class MyApplication(QWidget):
+ def __init__(self):
+ super().__init__()
+ self.init_ui()
+
+ def init_ui(self):
+ self.setGeometry(0, 0, 300, 200)
+ self.setWindowIcon(QIcon('Photos/img.png'))
+ qr = self.frameGeometry() # 创建一个矩形对象qr,它表示窗口的几何形状
+
+ cp = QGuiApplication.primaryScreen().availableGeometry().center() # 获取主屏幕的几何属性,计算出屏幕中心点的坐标
+ qr.moveCenter(cp) # 将窗口的几何形状移动到屏幕中心
+ self.move(qr.topLeft()) # 将窗口移动到矩形的左上角,以实现窗口剧中显示的效果
+
+ QLabel('Hello World!', self)
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ ex = MyApplication()
+ ex.show() # 调用父类方法,显示窗口
+ sys.exit(app.exec())
diff --git a/QT/PyQt/3. QMainWindow主要内容.py b/QT/PyQt/3. QMainWindow主要内容.py
new file mode 100644
index 0000000..bdd97a8
--- /dev/null
+++ b/QT/PyQt/3. QMainWindow主要内容.py
@@ -0,0 +1,54 @@
+#!D:\Python311\python.exe
+# -*- coding: utf-8 -*-
+# @Time : 2024/2/26 14:01
+# @Author : DC_DC
+"""
+QMainWindow是QT框架中的一个类,用于创建主窗口应用程序,提供一个具有一般应用程序框架的主窗口,包括菜单栏、工具栏、状态栏和中央工作区域
+使用这个类可以管理主窗口
+1. 主窗口标题
+2. 主窗口标签
+3. 菜单栏
+4. 工具栏
+5. 状态栏
+"""
+import sys
+
+from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
+
+
+class MyMainWindow(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ # 设置主窗口标题
+ self.setWindowTitle('My Main Window')
+ # 添加标签到中央工作区域
+ central_widget = QLabel("Hello, QMainWindow!")
+ self.setCentralWidget(central_widget)
+ # 添加菜单栏
+ menubar = self.menuBar()
+ file_menu = menubar.addMenu('File')
+ file_menu.addAction('Open')
+ file_menu.addAction('Save')
+ # 添加工具栏
+ toolbar = self.addToolBar('Tools')
+ toolbar.addAction('Cut')
+ toolbar.addAction('Copy')
+ toolbar.addAction('Paste')
+ # 添加状态栏
+ statusbar = self.statusBar()
+ statusbar.showMessage('Ready')
+
+
+if __name__ == '__main__':
+ app = QApplication([]) # 这种写法和下面的写法一致
+ """
+ 为什么要实例化这个类呢?
+ 1. 管理应用程序的事件循环
+ 2. 管理应用程序的全局状态
+ 3,处理命令行参数
+ 记住,创建一个QApplication对象是整个PyQT5应用程序的入口点
+ """
+ # app = QApplication(sys.argv if sys.argv else [])
+ window = MyMainWindow()
+ window.show()
+ app.exec_()
diff --git a/QT/PyQt/4. 多页面切换实例.py b/QT/PyQt/4. 多页面切换实例.py
new file mode 100644
index 0000000..6dce6ad
--- /dev/null
+++ b/QT/PyQt/4. 多页面切换实例.py
@@ -0,0 +1,40 @@
+#!D:\Python311\python.exe
+# -*- coding: utf-8 -*-
+# @Time : 2024/2/28 16:09
+# @Author : DC_DC
+import sys
+from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget, QVBoxLayout, QPushButton, QWidget, QHBoxLayout
+from PyQt6.QtGui import QIcon
+
+
+class MainWindow(QMainWindow):
+ def __init__(self):
+ super().__init__()
+ self.setWindowTitle("DC_DC") # 设置窗口标题
+ self.setWindowIcon(QIcon('Photos/img.png')) # 设置图标
+ self.setGeometry(100, 100, 800, 600) # 设置窗口大小
+ self.tab_widget = QTabWidget() # 创建了一个QTabWidget实例,用于容纳标签页。
+ self.setCentralWidget(self.tab_widget) # 设置标签页空间位置
+ self.page1 = QWidget() # 创建页面1
+ self.page2 = QWidget() # 创建页面2
+ self.tab_widget.addTab(self.page1, "页面1") # 添加页面1到QTabWidget
+ self.tab_widget.addTab(self.page2, "页面2") # 添加页面2到QTabWidget
+ layout = QVBoxLayout() # 定义一个垂直布局对象,用来组织两个按钮 如果设置水平就实例化QHBoxLayout 一个布局对象只能被设置给一个父对象
+ button1 = QPushButton("切换到页面1") # 定义一个按钮
+ button1.clicked.connect(lambda: self.switch_page(1)) # 设置按钮的映射关系
+ button2 = QPushButton("切换到页面2") # 定义一个按钮
+ button2.clicked.connect(lambda: self.switch_page(2)) # 设置按钮的映射关系
+ layout.addWidget(button1) # 添加按钮1到垂直布局对象
+ layout.addWidget(button2) # 添加按钮2到垂直布局对象
+ self.page2.setLayout(layout) # 按照布局规则进行摆放页面
+ self.page1.setLayout(layout) # 按照布局规则进行摆放页面
+
+ def switch_page(self, index):
+ self.tab_widget.setCurrentIndex(index - 1)
+
+
+if __name__ == "__main__":
+ app = QApplication([]) # 创建一个应用程序对象
+ mainWin = MainWindow()
+ mainWin.show()
+ sys.exit(app.exec())
diff --git a/QT/PyQt/Photos/img.png b/QT/PyQt/Photos/img.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c98350d67aa4e24a4a8902a8ae5f09cb57e8d96
GIT binary patch
literal 4020
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