python库pyQt基础教程二

2024-05-01 22:06 python库pyQt基础教程二已关闭评论

当然,为了进一步探索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组件,包括数据展示、用户交互及界面增强功能。通过结合这些基础和进阶知识,您可以开发出功能丰富、用户体验良好的应用程序。

当前文章价值8.07元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/3416.html ,谢谢支持!

资源分享

分类:python 标签:, ,
浅谈无序广播和有序广播 浅谈无序广播和有序广播
如何重用接口多个抽象方法中的一个或多个? 如何重用接口多个抽象方法中的一
关于LinearLayout设置权重后width或height不设置0dp的影响说明 关于LinearLayout设置权重后wi
浅谈char、varchar和nvarchar的区别 浅谈char、varchar和nvarchar的区

评论已关闭!