gpt4 book ai didi

contextmenu - 添加上下文 QMenu 左键单击 PySide 中的按钮

转载 作者:行者123 更新时间:2023-12-02 22:17:20 25 4
gpt4 key购买 nike

我想在 emailbtn 上按下鼠标按钮的左键单击 添加上下文菜单

from PySide import QtCore,QtGui
import sys
class ToolBarUI(QtGui.QWidget):
def __init__(self,*args,**kwargs):
super(ToolBarUI,self).__init__(*args,**kwargs)
self.createActions()

self.floatingToolBar()
pass

def sizeHint(self):
return QtCore.QSize(65,45)

def buttons(self):
x,y=15,35
self.btnVLay=QtGui.QVBoxLayout(self)
self.setLayout(self.btnVLay)
self.btnVLay.setContentsMargins(0,0,0,0)

self.incSavbtn=QtGui.QPushButton("Save")
self.incSavbtn.setMinimumSize(QtCore.QSize(x,y))
self.emailbtn=QtGui.QPushButton("Email")
self.emailbtn.setMinimumSize(QtCore.QSize(x,y))
self.upldbtn=QtGui.QPushButton("Upload")
self.upldbtn.setMinimumSize(QtCore.QSize(x,y))
self.setPrjbtn=QtGui.QPushButton("Set Project")
self.setPrjbtn.setMinimumSize(QtCore.QSize(x,y))
self.setThumb=QtGui.QPushButton("Set thumb")
self.setThumb.setMinimumSize(QtCore.QSize(x,y))
self.shwMatbtn=QtGui.QPushButton("Show Material")
self.shwMatbtn.setMinimumSize(QtCore.QSize(x,y))
self.fixtexbtn=QtGui.QPushButton("Fix Texture Paths")
self.fixtexbtn.setMinimumSize(QtCore.QSize(x,y))

btns = [self.incSavbtn,self.emailbtn,self.upldbtn,self.setPrjbtn,self.setPrjbtn,self.setThumb,self.shwMatbtn,self.fixtexbtn]

[self.btnVLay.addWidget(each) for each in btns]

def contextMenuEvent(self, event):
menu = QtGui.QMenu(self)
menu.addAction(self.emlSel)
menu.addAction(self.emlScn)
menu.addAction(self.emlBufr)
#menu.exec_(self.emailbtn.mapToGlobal(QtCore.QPoint(0,0)))
#menu.exec_(event.globalPos())

def createActions(self):

self.emlSel = QtGui.QAction("Email Selected", self)

self.emlScn = QtGui.QAction("Email this Scene", self)

self.emlBufr = QtGui.QAction("Email Current Frame Buffer", self)


def floatingToolBar(self):
self.buttons()
self.setLayout(self.btnVLay)
self.show()
pass

if __name__ =='__main__':

app = QtGui.QApplication(sys.argv)

win = ToolBarUI()
win.show()
sys.exit(app.exec_())

我已经在 contextMenuEvent 方法中尝试过,但是这让我可以右键单击:/我错过了什么?任何帮助将不胜感激。

最佳答案

它在 Linux 中有效,但在 Windows 中无效。

下面是我用于 systemtrayicon 的代码,在 Windows 中支持左键单击。这也可能对您有用。

QtCore.QObject.connect(self, QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.iconActivated)   

def iconActivated(self, reason):

if reason == QtGui.QSystemTrayIcon.Trigger: // left click, right click is Context
self.contextMenu().activateWindow() // menu will disappear on clicking any where other than menu
self.contextMenu().popup(QtGui.QCursor.pos()) // display menu at cursor location

关于contextmenu - 添加上下文 QMenu 左键单击 PySide 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14252468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com