小编bfr*_*ris的帖子

PyQt:有没有更好的方法在代码中设置 objectName?

当您使用 Qt_Designer 或 Qt_Creator 设计表单时,任何给定小部件的 objectName 始终设置为某物。但是,如果您在代码中创建一个小部件并且稍后需要 objectName,则必须明确分配它。那么小部件分配至少需要两行代码。这看起来非常不雅观。

例子:

button1 = QPushButton('button caption')   # at this point objectName is some kind of empty string
button1.setObjectName('button1')
Run Code Online (Sandbox Code Playgroud)

如果您稍后需要查找小部件(即使用 findChild),您必须设置 objectName,否则您就不走运了。

有什么方法可以在没有额外代码行的情况下自动设置 objectName 吗?我查看了PyQt5 参考指南,找不到这样的功能。一个类似的问题被要求在代码审查,但没有得到回应。两行代码并不是世界末日,但似乎是多余的。不知何故,我需要为 Python(第一行)和 Qt 两次分配这个名称。

python pyqt pyqt5

5
推荐指数
1
解决办法
4508
查看次数

如何在Python中按字符串asc/desc的多个字段对对象列表进行排序?

我想根据用户输入对对象列表进行排序,其中我允许按 ASC 顺序对某些列进行排序,而按 DESC 顺序对其他列进行排序(该字段是字符串/数字 - 但对于数字没有问题)。

示例类和对象列表如下所示:

from pydantic import BaseModel

class Person(BaseModel):
  firstname: str
  lastname: str
  weight: float

people = [
  Person(firstname="John", lastname="Snow", weight=100.1), 
  Person(firstname="Matthew", lastname="Smith", weight=98.7), 
  # And more...
]
Run Code Online (Sandbox Code Playgroud)

所以问题是我想按名字 ASC、姓氏 DESC (以及其他字段也是 DESC 或 ASC)对对象进行排序。

我试着这样做people.sort(lambda person: (-person.firstname, person.lastname))

但我得到了TypeError: bad operand type for unary -: 'str'

python python-3.x pydantic

2
推荐指数
1
解决办法
1199
查看次数

标签 统计

python ×2

pydantic ×1

pyqt ×1

pyqt5 ×1

python-3.x ×1