(click here for image) The UI I want to make with python
有没有办法在Maya中使用python创建这个UI? 我尝试了几种方法。 但无法获得信息'按钮下方和靠近全屏'按钮。 任何可以帮助我的提示或方法。 (我真的很想给出图像的像素位置。 但无法找到实现这一目标的方法。)
提前致谢。
答案 0 :(得分:1)
在PySide
中也很容易做到,它也随Maya一起提供。
你不应该按像素设置位置,因为相信我,如果你需要修改它,那将是一个巨大的麻烦。如果您对界面进行硬编码,它也无法正确调整窗口大小。相反,您需要使用嵌套布局:
verticalLayout
horizontalLayout
button
verticalLayout
fullScreenButton
infoButton
.. do the same as above for other 2 main buttons
一个例子看起来像这样:
from PySide2 import QtWidgets
class Window(QtWidgets.QDialog):
def __init__(self):
QtWidgets.QDialog.__init__(self)
# The width of the buttons on the side.
side_width = 30
self.button_1 = QtWidgets.QPushButton("BAKE ANIMATION", parent=self)
self.button_1.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) # Make it stretchable vertically and horizontally.
self.full_screen_1 = QtWidgets.QPushButton("[ ]", parent=self)
self.full_screen_1.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding) # Make it stretchable only vertically.
self.full_screen_1.setFixedWidth(side_width) # Give it a fixed width.
self.info_1 = QtWidgets.QPushButton("i", parent=self)
self.info_1.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
self.info_1.setFixedWidth(side_width)
# Vertical layout for fullscreen and info buttons.
self.side_layout_1 = QtWidgets.QVBoxLayout()
self.side_layout_1.addWidget(self.full_screen_1)
self.side_layout_1.addWidget(self.info_1)
# Horizontal layout for main button and previous vertical layout.
self.sub_layout_1 = QtWidgets.QHBoxLayout()
self.sub_layout_1.addWidget(self.button_1)
self.sub_layout_1.addLayout(self.side_layout_1)
# Do the same for the 2nd section.
self.button_2 = QtWidgets.QPushButton("CONVERT TO\nSPECIAL KEYFRAME", parent=self)
self.button_2.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
self.full_screen_2 = QtWidgets.QPushButton("[ ]", parent=self)
self.full_screen_2.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
self.full_screen_2.setFixedWidth(side_width)
self.info_2 = QtWidgets.QPushButton("i", parent=self)
self.info_2.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
self.info_2.setFixedWidth(side_width)
self.side_layout_2 = QtWidgets.QVBoxLayout()
self.side_layout_2.addWidget(self.full_screen_2)
self.side_layout_2.addWidget(self.info_2)
self.sub_layout_2 = QtWidgets.QHBoxLayout()
self.sub_layout_2.addWidget(self.button_2)
self.sub_layout_2.addLayout(self.side_layout_2)
# Do the same for the 3rd section.
self.button_3 = QtWidgets.QPushButton("MAKE\nBREAKDOWN POSE", parent=self)
self.button_3.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
self.full_screen_3 = QtWidgets.QPushButton("[ ]", parent=self)
self.full_screen_3.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
self.full_screen_3.setFixedWidth(side_width)
self.info_3 = QtWidgets.QPushButton("i", parent=self)
self.info_3.setSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Expanding)
self.info_3.setFixedWidth(side_width)
self.side_layout_3 = QtWidgets.QVBoxLayout()
self.side_layout_3.addWidget(self.full_screen_3)
self.side_layout_3.addWidget(self.info_3)
self.sub_layout_3 = QtWidgets.QHBoxLayout()
self.sub_layout_3.addWidget(self.button_3)
self.sub_layout_3.addLayout(self.side_layout_3)
# Add all sub layouts to a vertical layout.
self.main_layout = QtWidgets.QVBoxLayout()
self.main_layout.setSpacing(2) # Reduce spacing to make it look more like your image.
self.main_layout.addLayout(self.sub_layout_1)
self.main_layout.addLayout(self.sub_layout_2)
self.main_layout.addLayout(self.sub_layout_3)
self.setLayout(self.main_layout)
win = Window()
win.show()
使用循环或函数来创建一个" row部分"代码可能不那么长,但我希望这会给你一个想法。
答案 1 :(得分:0)
rowLayout
-> rowLayout
-> button
-> columnLayout -> button
-> button
这是您的一个小部件的布局,另外两个按钮
如果你想要一个类似的话题,我已经更深入地描述了这个话题: Not getting expected output in Maya python scripting for gui