在PySide2应用程序,我怎样才能得到一个QWindow的ID?(In a PySide2 app

2019-09-30 17:01发布

在PySide2的版本附带Maya2017,在winId上QWindow类方法似乎缺少:

w.winId()
Error: AttributeError: file <maya console> line 1: 'PySide2.QtGui.QWindow' object has no attribute 'winId' # 

有没有一种方式来获得QWindow的现有实例这个价值?

Answer 1:

我利用Maya 2018为MacOS 10.11.6。 试试这个代码。 有用。

from maya import OpenMayaUI as omui 

try:
  from PySide2.QtCore import * 
  from PySide2.QtGui import * 
  from PySide2.QtWidgets import *
  from PySide2 import __version__
  from shiboken2 import wrapInstance 
except ImportError:
  from PySide.QtCore import * 
  from PySide.QtGui import * 
  from PySide import __version__
  from shiboken import wrapInstance 

mayaMainWindowPtr = omui.MQtUtil.mainWindow() 
mayaMainWindow= wrapInstance(long(mayaMainWindowPtr), QWidget) 

w = QLabel("Hello, Window", parent=mayaMainWindow) 
w.setObjectName('Label1') 
w.setWindowFlags(Qt.Window)
w.show() 

和打字后:

w.winId()

你会得到这样的事情:

# Result: 140640756092816 #



Answer 2:

安迪的例子对我的作品在这两个Maya2018与Maya2017的最新版本,但至少在2017年玛雅的最初版本会抛出异常。

我希望这个问题是由相处的方式固定在PySide2的错误引起的。



文章来源: In a PySide2 app, how can I get the ID for a QWindow?