我正在从PySide2版本5升级到PySide6,release notes表示它支持snake-case方法名称,并用属性替换getter和setter方法。这听起来是一个很大的改进,但我不知道如何实现它。发行说明中有一个代码示例,但无法运行。当我尝试将其扩展为可运行的示例时,新版本不起作用
以下是仍然适用于PySide6的旧样式:
import sys
from PySide6.QtWidgets import (QTableWidget, QPushButton, QVBoxLayout,
QApplication, QWidget)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
table = QTableWidget()
table.setColumnCount(2)
button = QPushButton("Add")
button.setEnabled(False)
layout = QVBoxLayout(self)
layout.addWidget(table)
layout.addWidget(button)
if __name__ == "__main__":
app = QApplication([])
widget = MyWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())
以下是不起作用的新版本:
from __feature__ import snake_case, true_property
import sys
from PySide6.QtWidgets import (QTableWidget, QPushButton, QVBoxLayout,
QApplication, QWidget)
class MyWidget(QWidget):
def __init__(self):
super().__init__()
table = QTableWidget()
table.column_count = 2
button = QPushButton("Add")
button.enabled = False
layout = QVBoxLayout(self)
layout.add_widget(table)
layout.add_widget(button)
if __name__ == "__main__":
app = QApplication([])
widget = MyWidget()
widget.resize(800, 600)
widget.show()
sys.exit(app.exec_())
运行新版本时,出现以下错误:
Traceback (most recent call last):
File "/home/don/.config/JetBrains/PyCharm2021.1/scratches/scratch2.py", line 1, in <module>
from __feature__ import snake_case, true_property
ModuleNotFoundError: No module named '__feature__'
我一点也不奇怪,那该死的__feature__
应该从哪里来?我试着把它切换到__future__
,但也没用。仅仅删除__feature__
行也不起作用
我在原版feature description中找到了提示:
我错过的关键是,您必须将该放在PySide2导入之后。通过进一步的实验,我发现您必须将它放在所有其他导入之后,而不仅仅是PySide6。以后的任何导入都将重置功能标志
当我移动那一行时,新版本就可以工作了。但是,我的IDE不喜欢它,因此我必须关闭该行的验证:
相关问题 更多 >
编程相关推荐