此答案仅供我自己参考,试图重现问题并回答。
这里是 QtDesigner 为具有 DynamicPropierty 的主窗口生成的代码,
main_win.py :
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main_win.ui'
#
# Created by: PyQt5 UI code generator 5.12.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(270, 20, 261, 131))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 29))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
MainWindow.setProperty("Prova-proprieta", _translate("MainWindow", "valore_pp")) ### here the dynamic property created in the Designer interface
self.pushButton.setText(_translate("MainWindow", "PushButton"))
这里我的代码打印动态属性的值,
main.py :
import sys
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtWidgets import QPushButton
from main_win import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.setupUi(self)
print('from inside init : ', self.property('Prova-proprieta'))
self.pushButton.clicked.connect(self.pushButton_1_Pressed)
def pushButton_1_Pressed(self):
self.setProperty('Prova-proprieta', 'changed')
print('from PushButton : ', self.property('Prova-proprieta'))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
print('from loop : ',window.property('Prova-proprieta'))
window.show()
sys.exit(app.exec_())
让我知道它是否适合你