【问题标题】:In a PySide2 app, how can I get the ID for a QWindow?在 PySide2 应用程序中,如何获取 QWindow 的 ID?
【发布时间】:2017-09-19 00:40:26
【问题描述】:

在 Maya2017 附带的 PySide2 版本中,QWindow 类上的winId 方法似乎丢失了:

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

有没有办法从现有的 QWindow 实例中获取这个值?

【问题讨论】:

    标签: python qt5 maya pyside2


    【解决方案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 #
    

    【讨论】:

      【解决方案2】:

      Andy 的示例在 Maya2018 和最新版本的 Maya2017 中都适用于我,但至少在 Maya 2017 的初始版本中引发异常。

      我预计问题是由 PySide2 中的一个错误引起的,该错误已在此过程中得到修复。

      【讨论】:

        猜你喜欢
        • 2021-07-25
        • 2014-03-19
        • 2019-11-08
        • 2016-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-26
        • 1970-01-01
        相关资源
        最近更新 更多