簡體   English   中英

我如何訪問我使用 Qt Designer 創建的項目?

[英]How do i Acess Items that i created with Qt Designer?

對於許多人來說,這可能是一個簡單的問題,但我仍然難以訪問我在 QT Designer 中創建的項目。

我使用 QT Designer 創建了一個顯示 16x5 表的簡單 GUI,並將 .ui 轉換為 .py 文件。

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(686, 539)
        self.widget = QtWidgets.QWidget(Form)
        self.widget.setGeometry(QtCore.QRect(10, 60, 258, 223))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.tableWidget = QtWidgets.QTableWidget(self.widget)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(4)
        self.tableWidget.setRowCount(4)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setVerticalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        self.verticalLayout.addWidget(self.tableWidget)
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        item = self.tableWidget.verticalHeaderItem(0)
        item.setText(_translate("Form", "1"))
        item = self.tableWidget.verticalHeaderItem(1)
        item.setText(_translate("Form", "2"))
        item = self.tableWidget.verticalHeaderItem(2)
        item.setText(_translate("Form", "3"))
        item = self.tableWidget.verticalHeaderItem(3)
        item.setText(_translate("Form", "4"))
        item = self.tableWidget.horizontalHeaderItem(0)
        item.setText(_translate("Form", "A"))
        item = self.tableWidget.horizontalHeaderItem(1)
        item.setText(_translate("Form", "B"))
        item = self.tableWidget.horizontalHeaderItem(2)
        item.setText(_translate("Form", "C"))
        item = self.tableWidget.horizontalHeaderItem(3)
        item.setText(_translate("Form", "D"))

起初我嘗試在生成的文件中編碼,但感謝用戶:musicamante,他對我的最后一個問題發表了評論,我放棄了這個想法。

現在我只是像那樣加載文件。


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QTableWidgetItem
import sys
from GUI import Ui_Form

class ExampleApp(QtWidgets.QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(ExampleApp, self).__init__(parent)
        self.setupUi(self)

def update_now():
    #Store some Measurement Values
    WriteDatatoTable()

def WriteDatatoTable():
    **Test=Ui_Form()**
    **Test.tableWidget.setItem(0,1, QTableWidgetItem("123")**



def main():
    app = QApplication(sys.argv)
    form = ExampleApp()              
    timer=QtCore.QTimer()
    timer.timeout.connect(update_now)
    timer.start(1000)
    
    form.show()
    app.exec_()

if __name__ == '__main__':
    main()

我只想將數據打印到我的 GUI 表中。 但是當我嘗試我的方法時,我得到了 Ui_Form 沒有名為“tableWidget”的屬性的錯誤。 除了知道為什么會出現該錯誤外,遺憾的是我不知道如何解決該問題。 還是我的想法完全錯了?

我希望任何人都可以提供幫助。

您應該使您的函數成為 ExampleApp class 的方法,並將其與 class 中的“UI 類”相關聯。這在此處應該有效。 也許這不是最好的方法,但我會這樣做。 我希望它能幫助你。

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QTableWidgetItem
import sys
from GUI import Ui_Form


class ExampleApp(QtWidgets.QWidget, Ui_Form):
    def __init__(self, parent=None):
        super(ExampleApp, self).__init__(parent)
        self.setupUi(self)
        self.timer = QtCore.QTimer()
        self._connect()
        self.timer.start(1000)

    def _connect(self):
        self.timer.timeout.connect(self.update_now)

    def update_now(self):
        self.writeDataToTable()

    def writeDataToTable(self):
        self.tableWidget.setItem(0, 1, QTableWidgetItem("123"))
    

def main():
    app = QApplication(sys.argv)
    form = ExampleApp()
    form.show()
    app.exec_()


if __name__ == '__main__':
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM