我有一个GUI应用程序与PyQt6框架,我需要改变每一个字符串,而不是为每个类写几百行。
我找到了解决方案:只要重新生成父类的实例,一切都会自动改变。
在代码编辑器中一切正常:它再次运行。
但编译后出现问题:再生主类->两个类。
我正在使用Nuitka使用此命令编译(此错误在Linux和windows上出现):
python -m nuitka --onefile --follow-imports --plugin-enable=pyqt6 --disable-console program.py
program.py:
import sys
import random
from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QLabel
class Window(QWidget):
def __init__(self):
super().__init__()
b = QPushButton('Random')
b.clicked.connect(self._new) # noqa
self.layout = QVBoxLayout()
self.layout.addWidget(b)
self.setLayout(self.layout)
self.show()
def _new(self):
self.rand = Number(random.randint(0, 10))
class Number(QWidget):
def __init__(self, n):
super().__init__()
self.n = QLabel(str(n))
self.b = QPushButton('Regenerate')
self.b.clicked.connect(self.regenerate) # noqa
self.layout = QVBoxLayout()
self.layout.addWidget(self.n)
self.layout.addWidget(self.b)
self.setLayout(self.layout)
self.show()
@staticmethod
def regenerate():
global window
###################
window = Window() # Bug appears here
###################
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
app.exec()
迁移到PySide6修复了这个问题