Gleb Asked:2020-11-26 19:20:17 +0800 CST2020-11-26 19:20:17 +0800 CST 2020-11-26 19:20:17 +0800 CST PyQt5 中的 SetAlignment() 函数参数 772 你能解释一下应该采用什么函数参数吗? setAlignment(联合,Qt_Alignment=None,Qt_AlignmentFlag=None): 提前致谢。 python 1 个回答 Voted Best Answer gil9red 2020-12-08T15:17:55+08:002020-12-08T15:17:55+08:00 让我们看一下方法的描述PyQt5: # real signature unknown; restored from __doc__ def setAlignment(self, Union, Qt_Alignment=None, Qt_AlignmentFlag=None): """ setAlignment(self, Union[Qt.Alignment, Qt.AlignmentFlag]) """ pass 它表明 中描述的真实签名__doc__有一个参数(这在尝试向函数传递多个参数时得到证实),要么是Qt.Alignment,要么是Qt.AlignmentFlag。 因此,参数Union, Qt_Alignment=None, Qt_AlignmentFlag=None实际上是一个参数。 如果您查看Qt 本身的文档中对相同方法的描述,可以看到额外的确认: void setAlignment(Qt::Alignment) 这里可能会出现问题: 为什么这个参数在 PyQt5 中被描述为 Union[Qt.Alignment, Qt.AlignmentFlag],但在原始文档中只是 Qt::Alignment? 要回答这个问题,您还需要查看 Qt 文档中的Qt::Alignment枚举: enum Qt::AlignmentFlag flags Qt::Alignment Qt::Alignment这是一组标志Qt::AlignmentFlag:Qt::AlignLeft等Qt::AlignRight,换句话说,Qt::Alignment可以同时传递一个或多个特定标志:例如,标志Qt::AlignCenter是由标志Qt::AlignVCenter和Qt::AlignHCenter. 要制作标志列表,需要使用位или运算符列出它们|: my_align_center = Qt::AlignVCenter | Qt::AlignHCenter 这Union[Qt.Alignment, Qt.AlignmentFlag]是参数中列出的变化之一的指示,它与我上面写的内容收敛。 我解释了为什么Union[Qt.Alignment, Qt.AlignmentFlag]在参数描述中指出它setAlignment。 现在,一些练习。 下面是一个使用示例Alignment: from PyQt5.QtWidgets import QLabel, QApplication, QGridLayout, QWidget from PyQt5.QtCore import Qt def create_label(alignment): label = QLabel('Test') label.setFixedSize(40, 40) label.setFrameStyle(QLabel.Box) label.setAlignment(alignment) return label app = QApplication([]) layout = QGridLayout() layout.addWidget(create_label(Qt.AlignLeft), 0, 0) layout.addWidget(create_label(Qt.AlignLeft | Qt.AlignBottom), 0, 1) layout.addWidget(create_label(Qt.AlignLeft | Qt.AlignVCenter), 0, 2) layout.addWidget(create_label(Qt.AlignLeft | Qt.AlignTop), 0, 3) layout.addWidget(create_label(Qt.AlignHCenter | Qt.AlignTop), 0, 4) layout.addWidget(create_label(Qt.AlignRight | Qt.AlignVCenter), 0, 5) w = QWidget() w.setLayout(layout) w.show() app.exec() 截屏:
让我们看一下方法的描述
PyQt5
:它表明 中描述的真实签名
__doc__
有一个参数(这在尝试向函数传递多个参数时得到证实),要么是Qt.Alignment
,要么是Qt.AlignmentFlag
。因此,参数
Union, Qt_Alignment=None, Qt_AlignmentFlag=None
实际上是一个参数。如果您查看Qt 本身的文档中对相同方法的描述,可以看到额外的确认:
这里可能会出现问题:
要回答这个问题,您还需要查看 Qt 文档中的Qt::Alignment枚举:
Qt::Alignment
这是一组标志Qt::AlignmentFlag
:Qt::AlignLeft
等Qt::AlignRight
,换句话说,Qt::Alignment
可以同时传递一个或多个特定标志:例如,标志Qt::AlignCenter
是由标志Qt::AlignVCenter
和Qt::AlignHCenter
.要制作标志列表,需要使用位
или
运算符列出它们|
:这
Union[Qt.Alignment, Qt.AlignmentFlag]
是参数中列出的变化之一的指示,它与我上面写的内容收敛。我解释了为什么
Union[Qt.Alignment, Qt.AlignmentFlag]
在参数描述中指出它setAlignment
。现在,一些练习。
下面是一个使用示例
Alignment
:截屏: