« Posts under PyQt

maya screenshot pyqt截屏

流程中的截图功能是必不可少的,实现的方法也很多。但是原理都是将一个动态桌面生成静态页面,然后裁剪选择的区域.之前基于pyqt写过一个截图的功能。现在跟大家分享一下,你可以任意更改代码,也可以写个界面把截图功能嵌入进去,当然如果可以请保留作者的信息.请留意博客更新,会不定期分享更多的代码便于大家学习!
由于工作时间没时间更新代码,也没优化,把之前写的代码附上,运行以下代码需要事先安装好pyqt.如果没有安装可以试试从maya2014 以上的PySide里导入QtGui和QtCore,我没测试PySide,不过应该可以。如果有什么问题请留言。 »Read More

only one column of a QTreeView/QTreeWidget editable只让一列可以编辑

如果你不写gui,可能不会在意maya channelBox的ui是如何实现的。最近一个工具需要用属性栏来显示和设置参数,当然思路有很多种。我使用QTreeView and QStandardItemModel 来实现的。因为我需要选择设置参数时能同时选中它的标签,但是标签那一栏需要设置为不可编辑,只做显示用。

只要override flags 方法即可

1
2
3
4
5
    def flags(self,index):
        flags = QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsSelectable
        if index.isValid() and index.column()==1:
            flags|= QtCore.Qt.ItemIsEditable
        return flags

如果使用的是QTreeWidget只有使用openPersistentEditor()和closePersistentEditor()来解决这一问题

1
2
3
4
5
6
7
8
9
10
11
        self._lastOpen = None
        self.itemDoubleClicked.connect(self.openEditStatus)
        self.itemSelectionChanged.connect(self.closeEditStatus)
    def closeEditStatus(self):
        if self._lastOpen:
            self.closePersistentEditor(self._lastOpen,1)
            self._lastOpen = None
    def openEditStatus(self):
        if self.currentColumn() == 1:
            self.openPersistentEditor(self.currentItem(),1)
            self._lastOpen = self.currentItem()

using eclipse with maya

关于 eclipse 配置问题

A . 需要的软件:

  1. Eclipsehttp://www.eclips.org
  2. python: http://www.python.org
  3. Eclipse Maya-Editor: download
  4. Eclipse Mel-Editor: download
  5. jdk (注意选择的位数跟eclipse要一致): http://www.oracle.com (我用mac系统自带jdk,所以不需要另安装)

»Read More