二.实现右键触发菜单

该文章介绍了如何使用PyQt5库创建一个UI界面,并设置自定义的右键菜单策略。首先新建action,然后设置QListWidget的contextMenuPolicy为CustomContextMenu。接着通过pyuic5工具将ui文件转换为Python代码。在Python文件中,定义了QmyMainWindow类并实现了on_listWidget_customContextMenuRequested方法,当在listWidget上点击右键时显示包含特定action的菜单。最后,运行应用程序展示UI界面。
摘要由CSDN通过智能技术生成

一.新建 action

在这里插入图片描述

二.设置contextMenuPolicy

在这里插入图片描述

三.导出ui文件为py文件

# from123.py 为导出 py文件   form.ui 为 qt creator创造的 ui 文件
pyuic5 -o x:\xxx\from123.py form.ui

from123.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'form.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.

from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Test(object):
    def setupUi(self, Test):
        Test.setObjectName("Test")
        Test.resize(800, 600)
        self.listWidget = QtWidgets.QListWidget(Test)
        self.listWidget.setGeometry(QtCore.QRect(210, 60, 256, 192))
        self.listWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.listWidget.setObjectName("listWidget")
        self.actionsa = QtWidgets.QAction(Test)
        self.actionsa.setObjectName("actionsa")

        self.retranslateUi(Test)
        QtCore.QMetaObject.connectSlotsByName(Test)

    def retranslateUi(self, Test):
        _translate = QtCore.QCoreApplication.translate
        Test.setWindowTitle(_translate("Test", "Test"))
        self.actionsa.setText(_translate("Test", "sa"))

四. 在python文件 中 添加函数

from PyQt5.QtWidgets import *
from PyQt5.QtCore import  *
from PyQt5.QtSql import  *
from PyQt5.QtGui import  QIcon, QCursor
from from123 import Ui_Test
import sys

class QmyMainWindow(QWidget):

    def __init__(self,parent=None):
        super().__init__(parent)

        self.ui = Ui_Test()
        self.ui.setupUi(self)
    def on_listWidget_customContextMenuRequested(self,pos):  ##右键快捷菜单  策略情况
        menuList=QMenu(self)    #创建菜单
        menuList.addAction(self.ui.actionsa) 
        menuList.exec(QCursor.pos())  #显示菜单
    
if __name__ == "__main__":
    app = QApplication(sys.argv)

    myApp = QmyMainWindow()
    myApp.show()
    
    sys.exit(app.exec())                                 #应用程序运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值