zhcj66 发表于 2020-2-3 09:18

Python遇到menu.exec_(evt.globaPos())报错退出

本帖最后由 zhcj66 于 2020-2-3 13:43 编辑

答案在3楼
如题,程序运行到menu.exec_(evt.globaPos())时程序崩溃了,新手学习希望帮忙看看什么原因
右击出现
Process finished with exit code 255

import sys
from PyQt5.Qt import *

app = QApplication(sys.argv)

window = Window()
window.setWindowTitle("QPushButton")
window.resize(500,500)

btn = QPushButton(QIcon("xxx.png"), "xxx" , window)
class Window(QWidget):
    def contextMenuEvent(self, evt):
      print("展示菜单")
      menu = QMenu(self)

      # 子菜单 最近打开
      open_recent_menu = QMenu()
      open_recent_menu.setTitle("最近打开")

      # 行为动作 新建 打开 分割线 退出
      new_action = QAction(QIcon("xxx.png"), "新建")
      new_action.triggered.connect(lambda: print("新建文件"))

      open_action = QAction(QIcon("xxx.png"), "打开")
      open_action.triggered.connect(lambda: print("打开文件"))

      exit_action = QAction("退出")
      exit_action.triggered.connect(lambda: print("退出软件"))

      file_action = QAction("最近_PyThon-GUI编程-PyQt5")
      file_action.triggered.connect(lambda: print("打开-PyThon-GUI编程-PyQt5"))

      menu.addAction(new_action)# 添加行动
      menu.addAction(open_action)# 添加行动

      open_recent_menu.addAction(file_action)# 添加行动
      menu.addMenu(open_recent_menu)# 添加子菜单

      menu.addSeparator()# 添加横线

      menu.addAction(exit_action)# 添加行动


      # menu.exec_(QPoint(100,100))#直接设置坐标点
      menu.exec_(evt.globaPos())#展示在鼠标点击的位置 # QContextMenuEvent

window.show()

sys.exit(app.exec_()) #必须这么加,否则一闪而过

葫芦炒鸡蛋 发表于 2020-2-3 09:54

把menu.exec_ 换成 menu.popup试试

葫芦炒鸡蛋 发表于 2020-2-3 12:57

evt.globaPos 这里打错了,应该是evt.globalPos。

zhcj66 发表于 2020-2-3 13:42

葫芦炒鸡蛋 发表于 2020-2-3 12:57
evt.globaPos 这里打错了,应该是evt.globalPos。

谢谢,确实是这个问题,
页: [1]
查看完整版本: Python遇到menu.exec_(evt.globaPos())报错退出