重複したウィンドウ作成の回避 質問1
たっきゅんさんのサイトで
ウィンドウを重複させない方法を読んだのですが、
かなり難し過ぎて
https://kiwamiden.com/how-to-avoid-overlapping-windows
ほかの方のサイトを読み漁っているのですが、一向に回避が出来ずに苦しんでいます。
pySide → pySide2 の翻訳も加味しながら、読み漁っているのですが、できないのです。
ちなみに、初めてつまずいたのは、
たっきゅんさん書籍 ガチンコツール開発部 の、チャプター7の7.8.3(p114~)からです。
簡単にできると思ったら出来ずに、ここから読み進めておりませんが、
恐らく、この書籍内では、回避の記述がないのでは。。
と思ってしまい、他をあたっています。
例えば、この方のサイトも参考にさせていただきました。
http://flame-blaze.net/archives/4703
僕と同じ考えだったので、うまくいくと思って翻訳しながらやってみたのですが、うまくいかず。。
以下
| ## -*- coding: utf-8 -*-
# *----------------------------------------------*#
# 各種モジュール読み込み
# *----------------------------------------------*#
from PySide2 import QtCore, QtGui, QtWidgets
from maya import OpenMayaUI as omUI
import shiboken2
# *----------------------------------------------*#
# MAIN
# *----------------------------------------------*#
def getMayaWindow():
"""
Get the main Maya window as a QtGui.QMainWindow instance
@return: QtGui.QMainWindow instance of the top level Maya windows
"""
ptr = omUI.MQtUtil.mainWindow()
if ptr is not None:
return shiboken2.wrapInstance(long(ptr), QtWidgets.QMainWindow)
class testUI(QtWidgets.QDialog):
def __init__(self):
QtWidgets.QDialog.__init__(self, getMayaWindow())
# すでにUIが出来てる場合は削除する
[x.close() for x in self.parent().findChildren(self.__class__)]
btn = QtWidgets.QPushButton("Hello World")
layout = QtWidgets.QVBoxLayout()
layout.addWidget(btn)
self.setLayout(layout)
def main():
mainWindow = getMayaWindow()
nowExists = mainWindow.findChildren(testUI)
for i in nowExists:
i.close()
win = testUI()
win.show()
main()
|
どうしたらよいのでしょうか。。うーむ
最終更新日:
2024年6月21日 14:58:09