我有一个词典列表:
globalParams = [{'attr':'enabled','ctrl':'checkBoxEnabled','type':'checkBox'},
{'attr':'colorMode','ctrl':'comboBoxColorMode','type':'comboBox'}]
Run Code Online (Sandbox Code Playgroud)
'ctrl' - Qt窗口中控件的名称.
通常,代码如下:
self.checkBoxEnabled.checkState()
Run Code Online (Sandbox Code Playgroud)
但checkBoxEnabled是一个对象.我只有一个字符串名称'checkBoxEnabled',不能使用它...
如何在pyqt中按名称查找对象?就像是?自.GetObjectByName('checkBoxEnabled'). checkState()
我有一张价格和产品日期表:
id
product
price
date
Run Code Online (Sandbox Code Playgroud)
我在价格变化时创造了一个新记录.我有一张这样的桌子:
id product price date
1 1 10 2014-01-01
2 1 20 2014-02-17
3 1 5 2014-03-28
4 2 25 2014-01-05
5 2 12 2014-02-08
6 2 30 2014-03-12
Run Code Online (Sandbox Code Playgroud)
我想得到所有产品的最后价格.但是当我与"产品"分组时,我无法从最大日期的行中获得价格.
我可以使用MAX(),MIN()或COUNT()在请求功能,但我需要根据其他价值的结果.
我最终想要这样的东西:
product price date
1 5 2014-03-28
2 30 2014-03-12
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.可能是这样的:
SELECT product, {price with max date}, {max date}
FROM table
GROUP BY product
Run Code Online (Sandbox Code Playgroud) 我喜欢材料设计。我喜欢jQuery,Web表单和元素。它有很多样式。但是当我使用PyQt时,我有默认按钮和复选框...
我喜欢这样的东西:

我可以更改qt元素,使其变得类似于Web表单的元素吗?告诉我要阅读的内容,或者可能已经有如何执行此操作的示例?我只是不知道这是否可能,因为我不知道朝哪个方向寻找...
我使用qt4和Windows ...并且仅了解python,不了解C / C ++
我使用网格布局(水平和垂直)。我喜欢这样的事实,即调整窗口大小时会填满整个窗口内容。但是此扩展程序管理不善。我经常想更改网格布局中仅一列的大小,而不更改窗口的大小。例如在Windows资源管理器中。有两列-目录的左侧列表及其内容在左侧的右边。而且我总是可以按一下它们之间的鼠标按钮,并拖动以更改彼此之间列的相互大小。
如何在Qt中做到这一点?

我有一个问题 - 在打开文件时的窗口中显示上次修改文件的人的姓名。如果您右键单击文件并选择“属性”和“详细信息”选项卡,则可以使用此信息...我看到所有者行和名称,但我不知道如何从我的脚本中获取此信息。
让我们看看文件上的属性:
\\server\project\sequences\ttt_sRnd.v016.mb
Run Code Online (Sandbox Code Playgroud)
我使用 Python2.7,但我没有找到如何获取数据的解决方案......在 linux 中它起作用了。但不是在窗口中。我试图控制台实用程序窗口。
dir /Q - 它适用于本地文件
C:\temp>dir /Q file.ext
11/06/2004 15:33 290,304 COMP\user file.ext
1 File(s) 290,304 bytes
0 Dir(s) 316,720,226,304 bytes free
Run Code Online (Sandbox Code Playgroud)
但在服务器上文件时不起作用:
\\server\project\sequences\>dir /Q file.ext
21/12/2016 16:00 66,372 ... file.ext
1 File(s) 66,372 bytes
0 Dir(s) 52,561,190,912 bytes free
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为在资源管理器中我可以看到数据并且它们可用
好吧,尝试另一个实用程序 subinacl.exe
它相同 - 处理本地文件而不处理服务器上的文件:
C:\temp>subinacl.exe /file file.ext /display=owner
/owner =comp\user
C:\temp>subinacl.exe /file \\server\project\sequences\file.ext /display=owner
\\server\project\sequences\file.ext - CreateFile Error : 1314 A required privilege is not held by the client.
Run Code Online (Sandbox Code Playgroud)
我尝试 …
我使用pyqt4.8 + python2.7
在QGraphicsScene我添加不同的对象,如QGraphicsEllipseItem和QGraphicsProxyWidget(与QPushButton).使用不同类型的对象必须调用不同的函数.
比如改变对象的大小
用于QGraphicsEllipseItem:
item.setRect(size)
Run Code Online (Sandbox Code Playgroud)
用于QPushButton:
item.widget().setRect(size)
Run Code Online (Sandbox Code Playgroud)
PS.setRect()for QPushButton- 是我的自定义功能
我在场景中选择对象并想要改变它们的大小.但是对于不同的对象需要调用不同的函数并且需要得到那种类型的对象才能产生所需的函数.
我有精选的物品.
selItems = self.scene.selectedItems()
for item in selItems:
...
Run Code Online (Sandbox Code Playgroud)
如何进一步学习触发所需功能的对象类型?
我使用pyqt4.8和python2.7
我创建QGraphicsView并插入QGraphicsScene.比View更大的场景,需要滚动.视图有垂直和水平滚动,但我想通过鼠标中键滚动.
我创建鼠标事件功能,但运动到奇怪.
def mousePressEvent(self, event):
self.__mousePressPos = None
self.__mouseMovePos = None
if event.button() == Qt.MidButton:
self.__mousePressPos = event.globalPos()
self.__mouseMovePos = event.globalPos()
else:
super(MyView, self).mousePressEvent(event)
def mouseMoveEvent(self, event):
if event.buttons() == Qt.MidButton:
curPos = self.__mousePressPos - self.__mouseMovePos
self.centerOn(curPos.x(), curPos.y())
self.__mouseMovePos = globalPos
else:
super(MyView, self).mouseMoveEvent(event)
def mouseReleaseEvent(self, event):
if self.__mousePressPos is not None:
moved = event.globalPos() - self.__mousePressPos
if moved.manhattanLength() > 3:
event.ignore()
return
super(MyView, self).mouseReleaseEvent(event)
Run Code Online (Sandbox Code Playgroud)
首先,场景移动与鼠标的移动不对应.我怀疑是视口的相对大小和场景的责任.以及舞台的规模.
其次,我无法移动视口外的场景,它到达边缘时停止.
让第二个仍然可以容忍.让它保持原样,但如何计算正确移动的场景的正确偏移移动鼠标,无论它被捕获的位置?
标准布局选项卡从左到右。所有标签都在附近。

如何更改一个标签的位置,使其附在右边缘上?像这样:

有可能吗?
我正在Nuke10中编写时间轴同步脚本。我应该更改全局框架设置。例:
nuke.root().knob('first_frame').setValue(1)
nuke.root().knob('last_frame').setValue(100)
Run Code Online (Sandbox Code Playgroud)
之后,我应该更改查看器的播放范围。例:
vv = nuke.activeViewer().node()
vv['frame_range_lock'].setValue(True)
vv['frame_range'].setValue('5-40')
Run Code Online (Sandbox Code Playgroud)
另外,它起作用了。但是在一起-不是。开始时,我的全局帧范围是1-10。当我运行所有这些行时-帧范围设置为1-100,但是播放范围设置为5-10。
我在脚本中间添加命令以检查播放范围:
nuke.root().knob('first_frame').setValue(1)
nuke.root().knob('last_frame').setValue(100)
x = vv.playbackRange()
print(x)
vv['frame_range_lock'].setValue(True)
vv['frame_range'].setValue('5-40')
Run Code Online (Sandbox Code Playgroud)
它是打印的:
# Result: 1-10
Run Code Online (Sandbox Code Playgroud)
我认为问题在于,在脚本完成运行之前,查看器中的数据不会更新。
如何强制核对刷新查看器?
还是可能有一条命令正在等待完成以前命令的更新?
还是有必要在查看器中指定帧范围?
历史选项卡中打印的所有 Maya 脚本日志和错误。这是所有命令和 python 脚本的输出。
为了更好的调试脚本,我希望所有日志都发送到服务器上的某个地方。如何拦截并将输出发送到您的脚本。然后我会做所有必要的事情,输出要么是远程控制台,要么是服务器上文件中的某个地方。
拦截输出的任务。怎么做?
我正在使用:Maya2014 + pyqt4.8 + python2.7
我正在做一个应用程序,它允许您加速和简化Maya中项目的选择.是一个选择器,用户可以将其附加到场景中的对象.在窗口中选择对象会导致场景中的对象分离.但相反我找不到怎么做.
如何捕获更改场景中对象选择并进一步处理其程序时发生的事件?