专栏导读
![请添加图片描述](https://i-blog.csdnimg.cn/direct/2f2e67a2690c4fd9a7c1840fcbcd4275.gif)
-
🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手
-
-
-
-
📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅
-
文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
-
❤️ 欢迎各位佬关注! ❤️
1、库的介绍
-
PyQt6是一个创建图形用户界面应用程序的工具包,它是Qt6的Python绑定。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛用于开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。PyQt6使得Python程序员能够利用Qt的强大功能,轻松创建具有丰富功能和美观界面的应用程序。
PyQt6的主要特点包括:
-
跨平台:可以在Windows、Linux、macOS等操作系统上运行。
-
丰富的控件:提供了大量的控件(如按钮、标签、文本框等),方便开发者使用。
-
强大的布局管理:提供了多种布局管理器,可以方便地对控件进行布局。
-
事件处理:支持各种事件处理,如鼠标点击、键盘输入等。
-
丰富的API:提供了大量的API,可以方便地进行各种开发操作。
-
与Qt6的紧密集成:作为Qt6的Python绑定,PyQt6可以访问Qt6的所有功能。
使用PyQt6开发应用程序的一般步骤:
-
安装PyQt6:可以通过pip安装PyQt6。
-
导入必要的模块:从PyQt6.QtWidgets模块中导入应用程序、窗口等类。
-
创建应用程序和窗口:创建一个QApplication对象和一个窗口对象。
-
设置窗口:设置窗口的标题、大小等属性。
-
添加控件:在窗口中添加各种控件,如按钮、文本框等。
-
设置布局:使用布局管理器对控件进行布局。
-
显示窗口:调用窗口的show()方法显示窗口。
-
运行应用程序:调用QApplication对象的exec()方法运行应用程序。
库的安装
pip install PyQt6 -i https://pypi.tuna.tsinghua.edu.cn/simple/
2、设计窗口
调用父类的初始化方法
设置窗口标题
设置窗口的初始大小
import sys
from PyQt6.QtGui import QStandardItemModel, QStandardItem
from PyQt6.QtWidgets import QWidget, QPushButton, QVBoxLayout, QApplication, QHBoxLayout, QListView, QLineEdit
class MyWidget(QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.setWindowTitle("简易PyQt6-GUI界面实现列表的增删查改")
self.resize(500,350)
设计列表视图
初始化一个列表
创建一个4行1列的标准数据模型,用于管理列表视图的数据
遍历数据模型的行数,将self.list中的数据设置为数据模型的项
创建QListView控件,并设置其模型为上面创建的数据模型
self.list = ['奥运', '巴黎', '夺冠', '奥运健儿']
self.mode = QStandardItemModel(4, 1)
for i in range(self.mode.rowCount()):
item = QStandardItem(self.list[i])
self.mode.setItem(i, 0, item)
self.mode.insertRow(4, QStandardItem("大家好"))
self.mode.insertRow(4, QStandardItem("大家好"))
self.listView = QListView()
self.listView.setModel(self.mode)
设计输入框控件与按钮
文本输入框:QLineEdit()
按钮绑定函数:QPushButton("显示文字", clicked=self.函数名无括号)
self.le = QLineEdit()
self.addPb = QPushButton("增加项", clicked=self.addItem)
self.delPb = QPushButton("删除项", clicked=self.delItem)
self.searchPb = QPushButton("查询", clicked=self.searchItem)
self.changePb = QPushButton("修改", clicked=self.changeItem)
self.sortPb = QPushButton("项目排序", clicked=self.sortItem)
设计布局
hLayout = QHBoxLayout()
hLayout.setContentsMargins(0, 0, 0, 0)
hLayout.addWidget(self.addPb)
hLayout.addWidget(self.delPb)
hLayout.addWidget(self.searchPb)
hLayout.addWidget(self.changePb)
hLayout.addWidget(self.sortPb)
self.vLayout = QVBoxLayout(self)
self.vLayout.addWidget(self.listView)
self.vLayout.addWidget(self.le)
self.vLayout.addLayout(hLayout)
listView的简单样式
self.listView.setStyleSheet("""
QListView {
background-color: #FFE4E1;
color: #333333;
border: 1px solid #BBBBBB;
}
QListView::Item {
padding: 5px;
}
QListView::Item:hover {
background-color: #87CEFA;
color:blue;
}
""")
增删查改函数
def addItem(self):
num = self.mode.rowCount()
s = self.le.text()
if s != '':
self.mode.appendRow(QStandardItem(s))
def delItem(self):
index = self.listView.currentIndex()
if index.isValid():
self.mode.removeRow(index.row())
else:
self.messageBox = QMessageBox.information(self, "提示", "请选择要删除的内容")
def searchItem(self):
s = self.le.text()
if s != '':
for i in range(self.mode.rowCount()):
if s == self.mode.item(i, 0).text():
self.listView.setCurrentIndex(self.mode.index(i, 0))
return
else:
self.messageBox = QMessageBox.information(self, "提示", "没有找到")
def changeItem(self):
s = self.le.text()
index = self.listView.currentIndex()
if s != '':
if index.isValid():
item = self.mode.itemFromIndex(index)
text = item.text()
item.setText(s)
self.messageBox = QMessageBox.information(self, "提示", "修改成功!")
else:
self.messageBox = QMessageBox.information(self, "提示", "请选择要修改的内容")
def sortItem(self):
self.mode.sort(0)
完整代码
'''
@Project :测试
@File :pyqt6_test.py
@IDE :PyCharm
@Author :一晌小贪欢
@Date :2024/7/29 14:35
'''
import sys
from PyQt6.QtGui import QStandardItemModel, QStandardItem
from PyQt6.QtWidgets import QWidget, QPushButton, QVBoxLayout, QApplication, QHBoxLayout, QListView, QLineEdit, \
QMessageBox
class MyWidget(QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.setWindowTitle("简易PyQt6-GUI界面实现列表的增删查改")
self.resize(500, 350)
self.list = ['奥运', '巴黎', '夺冠', '奥运健儿']
self.mode = QStandardItemModel(4, 1)
for i in range(self.mode.rowCount()):
item = QStandardItem(self.list[i])
self.mode.setItem(i, 0, item)
self.mode.insertRow(4, QStandardItem("大家好"))
self.listView = QListView()
self.listView.setModel(self.mode)
self.le = QLineEdit()
self.addPb = QPushButton("增加项", clicked=self.addItem)
self.delPb = QPushButton("删除项", clicked=self.delItem)
self.searchPb = QPushButton("查询", clicked=self.searchItem)
self.changePb = QPushButton("修改", clicked=self.changeItem)
self.sortPb = QPushButton("项目排序", clicked=self.sortItem)
hLayout = QHBoxLayout()
hLayout.setContentsMargins(0, 0, 0, 0)
hLayout.addWidget(self.addPb)
hLayout.addWidget(self.delPb)
hLayout.addWidget(self.searchPb)
hLayout.addWidget(self.changePb)
hLayout.addWidget(self.sortPb)
self.vLayout = QVBoxLayout(self)
self.vLayout.addWidget(self.listView)
self.vLayout.addWidget(self.le)
self.vLayout.addLayout(hLayout)
self.listView.setStyleSheet("""
QListView {
background-color: #FFE4E1;
color: #333333;
border: 1px solid #BBBBBB;
}
QListView::Item {
padding: 5px;
}
QListView::Item:hover {
background-color: #87CEFA;
color:blue;
}
""")
def addItem(self):
num = self.mode.rowCount()
s = self.le.text()
if s != '':
self.mode.appendRow(QStandardItem(s))
def delItem(self):
index = self.listView.currentIndex()
if index.isValid():
self.mode.removeRow(index.row())
else:
self.messageBox = QMessageBox.information(self, "提示", "请选择要删除的内容")
def searchItem(self):
s = self.le.text()
if s != '':
for i in range(self.mode.rowCount()):
if s == self.mode.item(i, 0).text():
self.listView.setCurrentIndex(self.mode.index(i, 0))
return
else:
self.messageBox = QMessageBox.information(self, "提示", "没有找到")
def changeItem(self):
s = self.le.text()
index = self.listView.currentIndex()
if s != '':
if index.isValid():
item = self.mode.itemFromIndex(index)
text = item.text()
item.setText(s)
self.messageBox = QMessageBox.information(self, "提示", "修改成功!")
else:
self.messageBox = QMessageBox.information(self, "提示", "请选择要修改的内容")
def sortItem(self):
self.mode.sort(0)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec())
总结
-
希望对初学者有帮助
-
致力于办公自动化的小小程序员一枚
-
希望能得到大家的【一个免费关注】!感谢
-
求个 🤞 关注 🤞
-
-
求个 ❤️ 喜欢 ❤️
-
-
求个 👍 收藏 👍
-