当然,为了进一步探索PyQt5的功能,下面我将提供一些更高级和实用的组件与功能示例,包括树形视图、表格视图、拖放功能、以及自定义右键菜单。
6. 树形视图(TreeView)
展示如何创建一个简单的树形结构视图。
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
treeView = QTreeView(window)
model = QStandardItemModel()
rootNode = model.invisibleRootItem()
parentItem = QStandardItem("Parent")
parentItem.appendRow(QStandardItem("Child 1"))
parentItem.appendRow(QStandardItem("Child 2"))
model.appendRow(parentItem)
treeView.setModel(model)
treeView.setHeaderHidden(True)
treeView.setGeometry(50, 300, 300, 200)
7. 表格视图(TableWidget)
演示如何填充和操作表格数据。
tableWidget = QTableWidget(window)
tableWidget.setRowCount(4)
tableWidget.setColumnCount(3)
headers = ["Name", "Age", "City"]
tableWidget.setHorizontalHeaderLabels(headers)
items = [
["Alice", 24, "New York"],
["Bob", 30, "Los Angeles"],
["Charlie", 28, "Chicago"],
["David", 22, "San Francisco"]
]
for row in range(len(items)):
for col in range(len(items[row])):
item = QTableWidgetItem(items[row][col])
tableWidget.setItem(row, col, item)
tableWidget.setGeometry(50, 350, 600, 200)
8. 拖放(Drag and Drop)
实现一个简单的拖放功能,允许用户在列表之间移动项目。
from PyQt5.QtCore import Qt
listWidget1 = QListWidget(window)
listWidget1.setGeometry(50, 400, 150, 100)
listWidget1.setDragEnabled(True)
listWidget1.viewport().setAcceptDrops(False)
listWidget1.setDropIndicatorShown(True)
listWidget2 = QListWidget(window)
listWidget2.setGeometry(250, 400, 150, 100)
listWidget2.setAcceptDrops(True)
listWidget2.setDragDropOverwriteMode(False)
listWidget2.setDropIndicatorShown(True)
listWidget2.dragEnterEvent = listWidget1.dragEnterEvent
listWidget2.dragMoveEvent = listWidget1.dragMoveEvent
listWidget2.dropEvent = listWidget1.dropEvent
# 添加一些项供拖动
for i in range(5):
listWidgetItem = QListWidgetItem(f"Item {i}")
listWidget1.addItem(listWidgetItem)
9. 自定义右键菜单(Context Menu)
为控件添加自定义的右键菜单。
def contextMenuEvent(event):
contextMenu = QMenu(window)
action1 = contextMenu.addAction("Action 1")
action2 = contextMenu.addAction("Action 2")
action = contextMenu.exec_(event.globalPos())
if action == action1:
print("Action 1 triggered")
elif action == action2:
print("Action 2 triggered")
button = QPushButton('右键试试', window)
button.setGeometry(50, 500, 100, 30)
button.setContextMenuPolicy(Qt.CustomContextMenu)
button.customContextMenuRequested.connect(lambda event: contextMenuEvent(event))
以上示例展示了如何利用PyQt5创建和定制各种常见的GUI组件,包括数据展示、用户交互及界面增强功能。通过结合这些基础和进阶知识,您可以开发出功能丰富、用户体验良好的应用程序。
当前文章价值7.77元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章
分类:python
标签:action, listwidget1, listwidget2
评论已关闭!