owned this note
owned this note
Published
Linked with GitHub
# Python
```python=
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
# import os
import sys
from PySide2 import QtCore, QtGui, QtWidgets
# from PySide2.QtCore import Qt
# from PySide2.QtGui import QPalette
# import maya.api.OpenMaya as om
# from maya import cmds
# import pymel.core as pm
# import maya.mel as mm
# from maya.api import OpenMaya as om2
# 機能を削除しているから不要なインポートが多いのだと思いますが
# 少なくともQtとQPaletteは2重に読んでいるので個別にインポートはしないほうがいいです。
# QtCore, QtGuiから使うように修正したほうがいいかと
# また、from maya import cmdsで読み込んでいるのに
# わざわざlaunch_from_mayaでimport maya.cmds as cmdsでインポートする意味はないのと
# その結果、launch_from_mayaが呼び出されたタイミングで中身が突然書き換わるのでやめたほうがいいです
# やりたいこととしましては選択したセルの行列を取得したいです。。
def startend(function):
def __wrapper(*args, **kwargs):
print("\n start [%s]" % function.__name__)
function(*args, **kwargs)
print(" - end [%s]\n" % function.__name__)
return __wrapper
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None, *args, **kwargs):
super(MainWindow, self).__init__(parent, *args, **kwargs)
self.setGeometry(650, 200, 500, 200)
self.setWindowTitle("window")
self.set_UI()
def set_UI(self):
wrapper = QtWidgets.QWidget()
self.setCentralWidget(wrapper)
self.root_Area = QtWidgets.QGridLayout() # レイアウトの変更はここ
wrapper.setLayout(self.root_Area) # ウィンドウ名は wrapper
# いらないのでコメントアウト
# self.edit = QtWidgets.QPushButton("test")
# self.edit.clicked.connect(self.test)
# self.root_Area.addWidget(self.edit, 0, 0)
# ======================ここから下が
self.table_widget = QtWidgets.QTableWidget()
self.root_Area.addWidget(self.table_widget, 5, 0, 5, 5)
# 行数 の設定
self.table_widget.setRowCount(3)
# 列数 の設定
self.table_widget.setColumnCount(3)
# 行のヘッダー 設定
row_item = QtWidgets.QTableWidgetItem("行のヘッダー名")
self.table_widget.setVerticalHeaderItem(0, row_item)
print(self.table_widget.rowCount()) # 行 数
# 列のヘッダー名 の設定
col_item = QtWidgets.QTableWidgetItem("列のヘッダー名")
self.table_widget.setHorizontalHeaderItem(0, col_item)
print(self.table_widget.columnCount()) # 列 数
# # 値の設置
# value_item = QtWidgets.QTableWidgetItem("値")
# self.table_widget.setItem(1, 1, value_item)
# Itemが欲しい場合はそもそもないと取得できないのでとりあえずすべてに追加
for row in range(self.table_widget.rowCount()):
for column in range(self.table_widget.rowCount()):
self.table_widget.setItem(
row, column, QtWidgets.QTableWidgetItem("値は%s, %s" % (row, column))
)
# QItemSelectionModel = self.table_widget.selectionModel()
# item自体が欲しいならcurrentItemChanged
self.table_widget.currentItemChanged.connect(self.test)
# 単純にcurrentCellが欲しいならcellClicked
self.table_widget.cellClicked.connect(self.test2)
# value_item.SelectRows()
@startend
def test2(self, row, column):
# type: (QtWidgets.QWidget, int, int) -> None
print((row, column), self.table_widget.item(row, column).text())
@startend
def test(self, current, previous): # column () const じゃなかった。
# type: (QtWidgets.QWidget, QtWidgets.QTableWidgetItem, QtWidgets.QTableWidgetItem) -> None
print("current", (current.row(), current.column()), current.text())
try:
print("previous", (previous.row(), previous.column()), previous.text())
except AttributeError:
pass
# print(self.table_widget.item(1, 1).text()) # こうじゃなく逆のことがしたい
# print(self.table_widget.selectedRows())
def get_maya_window():
"""Maya のウィンドウ取得"""
# type: (None) -> QtWidgets.QWidget
from maya import OpenMayaUI
from shiboken2 import wrapInstance
OpenMayaUI.MQtUtil.mainWindow()
ptr = OpenMayaUI.MQtUtil.mainWindow()
widget = wrapInstance(int(ptr), QtWidgets.QWidget)
return widget
def launch_from_maya():
"""Maya 用の起動"""
# type: (None) -> None
maya_window = get_maya_window()
window = MainWindow(parent=maya_window)
window.show()
# launch_from_maya()
```
#こちらになります!!
```python
import os
# -*- coding: utf-8 -*-
from __future__ import (absolute_import, division, print_function, unicode_literals)
import os
import sys
from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt
from PySide2.QtGui import QPalette
import maya.api.OpenMaya as om
from maya import cmds
import pymel.core as pm
import maya.mel as mm
from maya.api import OpenMaya as om2
#やりたいこととしましては選択したセルの行列を取得したいです。。
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None, *args, **kwargs):
super(MainWindow, self).__init__(parent, *args, **kwargs)
self.setGeometry(650, 200, 500, 200)
self.setWindowTitle(u'window')
self.set_UI()
def set_UI(self):
wrapper = QtWidgets.QWidget()
self.setCentralWidget(wrapper)
self.root_Area = QtWidgets.QGridLayout() # レイアウトの変更はここ
wrapper.setLayout(self.root_Area) # ウィンドウ名は wrapper
self.edit = QtWidgets.QPushButton(u"test")
self.edit.clicked.connect(self.test)
self.root_Area.addWidget(self.edit, 0,0)
#======================ここから下が
self.table_widget = QtWidgets.QTableWidget()
self.root_Area.addWidget(self.table_widget,5,0,5,5)
# 行数 の設定
self.table_widget.setRowCount(3)
# 列数 の設定
self.table_widget.setColumnCount(3)
# 行のヘッダー 設定
row_item = QtWidgets.QTableWidgetItem(u'行のヘッダー名')
self.table_widget.setVerticalHeaderItem(0, row_item)
print(self.table_widget.rowCount())#行 数
# 列のヘッダー名 の設定
col_item = QtWidgets.QTableWidgetItem(u'列のヘッダー名')
self.table_widget.setHorizontalHeaderItem(0, col_item)
print(self.table_widget.columnCount())#列 数
# 値の設置
value_item = QtWidgets.QTableWidgetItem(u'値')
self.table_widget.setItem(1,1, value_item)
QItemSelectionModel = self.table_widget.selectionModel()
#value_item.SelectRows()
def test(self):#column () const じゃなかった。
print(self.table_widget.item( 1, 1 ).text())#こうじゃなく逆のことがしたい
#print(self.table_widget.selectedRows())
# Maya のウィンドウ取得
def get_maya_window():
from maya import OpenMayaUI
from shiboken2 import wrapInstance
OpenMayaUI.MQtUtil.mainWindow()
ptr = OpenMayaUI.MQtUtil.mainWindow()
widget = wrapInstance(int(ptr), QtWidgets.QWidget)
return widget
# Maya 用の起動
def launch_from_maya():
import maya.cmds as cmds
maya_window = get_maya_window()
window = MainWindow(parent=maya_window)
window.show()
launch_from_maya()