如何基于几个参数填充表小部件?

2024-06-28 19:48:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个客户记录程序,将用于美容沙龙。在

Main interface。在

所以,我需要使用这个对话框窗口填充我的表小部件。在

每个记录都需要放在准确的时间位置。那么,如何实现呢?在

这是QtDesigner创建的界面和对话框代码。 表控件

    self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
    self.tableWidget.setGeometry(QtCore.QRect(330, 0, 521, 781))
    self.tableWidget.setObjectName("tableWidget")
    self.tableWidget.setColumnCount(5)
    self.tableWidget.setRowCount(25)
    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()
    #and so on...
    MainWindow.setCentralWidget(self.centralwidget)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "Главная"))
    self.addclient.setText(_translate("MainWindow", "Записать клиента"))
    self.uslugi.setText(_translate("MainWindow", "Список услуг"))
    self.mastera.setText(_translate("MainWindow", "Список мастеров"))
    item = self.tableWidget.horizontalHeaderItem(0)
    item.setText(_translate("MainWindow", "Время"))
    item = self.tableWidget.horizontalHeaderItem(1)
    item.setText(_translate("MainWindow", "Мастер"))
    item = self.tableWidget.horizontalHeaderItem(2)
    item.setText(_translate("MainWindow", "Услуга"))
    item = self.tableWidget.horizontalHeaderItem(3)
    item.setText(_translate("MainWindow", "Имя "))
    item = self.tableWidget.horizontalHeaderItem(4)
    item.setText(_translate("MainWindow", "Номер"))
    __sortingEnabled = self.tableWidget.isSortingEnabled()
    self.tableWidget.setSortingEnabled(False)
    item = self.tableWidget.item(0, 0)
    item.setText(_translate("MainWindow", "8:00"))
    item = self.tableWidget.item(1, 0)
    item.setText(_translate("MainWindow", "8:30"))
    item = self.tableWidget.item(2, 0)
    #...
    self.tableWidget.setSortingEnabled(__sortingEnabled)

和对话框窗口

^{pr2}$

所以我需要在Dialog的输入字段中输入信息,以便在表小部件中精确地放置时间。我会很感激你的帮助!很抱歉QtDesigner滥用:D

这是一个记录客户端按钮函数,用于打开对话框窗口

class MyDialog(QtWidgets.QDialog):
def __init__(self, parent=None):
    super(MyDialog, self).__init__(parent)
    self.ui = Ui_Dialog()
    self.ui.setupUi(self)

class MyWin(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(MyWin, self).__init__(parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.addclient.clicked.connect(self.addclientfunction)

def addclientfunction(self):
    self.dialog = MyDialog()
    self.dialog.show()

整个MyWidnow类

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(860, 803)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.calendarWidget = QtWidgets.QCalendarWidget(self.centralwidget)
    self.calendarWidget.setGeometry(QtCore.QRect(0, 0, 331, 191))
    self.calendarWidget.setObjectName("calendarWidget")
    self.addclient = QtWidgets.QPushButton(self.centralwidget)
    self.addclient.setGeometry(QtCore.QRect(0, 350, 331, 81))
    font = QtGui.QFont()
    font.setFamily("Verdana")
    font.setPointSize(10)
    self.addclient.setFont(font)
    self.addclient.setObjectName("addclient")
    self.uslugi = QtWidgets.QPushButton(self.centralwidget)
    self.uslugi.setEnabled(True)
    self.uslugi.setGeometry(QtCore.QRect(0, 270, 331, 81))
    font = QtGui.QFont()
    font.setFamily("Verdana")
    font.setPointSize(10)
    self.uslugi.setFont(font)
    self.uslugi.setObjectName("uslugi")
    self.mastera = QtWidgets.QPushButton(self.centralwidget)
    self.mastera.setGeometry(QtCore.QRect(0, 190, 331, 81))
    font = QtGui.QFont()
    font.setFamily("Verdana")
    font.setPointSize(10)
    self.mastera.setFont(font)
    self.mastera.setObjectName("mastera")
    self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
    self.tableWidget.setGeometry(QtCore.QRect(330, 0, 521, 781))
    self.tableWidget.setObjectName("tableWidget")
    self.tableWidget.setColumnCount(5)
    self.tableWidget.setRowCount(25)
    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.setVerticalHeaderItem(4, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(5, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(6, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(7, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(8, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(9, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(10, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(11, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(12, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(13, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(14, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(15, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(16, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(17, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(18, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(19, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(20, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(21, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(22, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(23, item)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setVerticalHeaderItem(24, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    font = QtGui.QFont()
    font.setStyleStrategy(QtGui.QFont.PreferAntialias)
    item.setFont(font)
    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)
    item = QtWidgets.QTableWidgetItem()
    self.tableWidget.setHorizontalHeaderItem(4, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(0, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(1, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(2, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(3, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(4, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(5, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(6, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(7, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(8, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(9, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(10, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(11, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(12, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(13, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(14, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(15, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(16, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(17, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(18, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(19, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(20, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(21, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(22, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(23, 0, item)
    item = QtWidgets.QTableWidgetItem()
    item.setTextAlignment(QtCore.Qt.AlignCenter)
    self.tableWidget.setItem(24, 0, item)
    MainWindow.setCentralWidget(self.centralwidget)
    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", "Главная"))
    self.addclient.setText(_translate("MainWindow", "Записать клиента"))
    self.uslugi.setText(_translate("MainWindow", "Список услуг"))
    self.mastera.setText(_translate("MainWindow", "Список мастеров"))
    item = self.tableWidget.horizontalHeaderItem(0)
    item.setText(_translate("MainWindow", "Время"))
    item = self.tableWidget.horizontalHeaderItem(1)
    item.setText(_translate("MainWindow", "Мастер"))
    item = self.tableWidget.horizontalHeaderItem(2)
    item.setText(_translate("MainWindow", "Услуга"))
    item = self.tableWidget.horizontalHeaderItem(3)
    item.setText(_translate("MainWindow", "Имя "))
    item = self.tableWidget.horizontalHeaderItem(4)
    item.setText(_translate("MainWindow", "Номер"))
    __sortingEnabled = self.tableWidget.isSortingEnabled()
    self.tableWidget.setSortingEnabled(False)
    item = self.tableWidget.item(0, 0)
    item.setText(_translate("MainWindow", "8:00"))
    item = self.tableWidget.item(1, 0)
    item.setText(_translate("MainWindow", "8:30"))
    item = self.tableWidget.item(2, 0)
    item.setText(_translate("MainWindow", "9:00"))
    item = self.tableWidget.item(3, 0)
    item.setText(_translate("MainWindow", "9:30"))
    item = self.tableWidget.item(4, 0)
    item.setText(_translate("MainWindow", "10:00"))
    item = self.tableWidget.item(5, 0)
    item.setText(_translate("MainWindow", "10:30"))
    item = self.tableWidget.item(6, 0)
    item.setText(_translate("MainWindow", "11:00"))
    item = self.tableWidget.item(7, 0)
    item.setText(_translate("MainWindow", "11:30"))
    item = self.tableWidget.item(8, 0)
    item.setText(_translate("MainWindow", "12:00"))
    item = self.tableWidget.item(9, 0)
    item.setText(_translate("MainWindow", "12:30"))
    item = self.tableWidget.item(10, 0)
    item.setText(_translate("MainWindow", "13:00"))
    item = self.tableWidget.item(11, 0)
    item.setText(_translate("MainWindow", "13:30"))
    item = self.tableWidget.item(12, 0)
    item.setText(_translate("MainWindow", "14:00"))
    item = self.tableWidget.item(13, 0)
    item.setText(_translate("MainWindow", "14:30"))
    item = self.tableWidget.item(14, 0)
    item.setText(_translate("MainWindow", "15:00"))
    item = self.tableWidget.item(15, 0)
    item.setText(_translate("MainWindow", "15:30"))
    item = self.tableWidget.item(16, 0)
    item.setText(_translate("MainWindow", "16:00"))
    item = self.tableWidget.item(17, 0)
    item.setText(_translate("MainWindow", "16:30"))
    item = self.tableWidget.item(18, 0)
    item.setText(_translate("MainWindow", "17:00"))
    item = self.tableWidget.item(19, 0)
    item.setText(_translate("MainWindow", "17:30"))
    item = self.tableWidget.item(20, 0)
    item.setText(_translate("MainWindow", "18:00"))
    item = self.tableWidget.item(21, 0)
    item.setText(_translate("MainWindow", "18:30"))
    item = self.tableWidget.item(22, 0)
    item.setText(_translate("MainWindow", "19:00"))
    item = self.tableWidget.item(23, 0)
    item.setText(_translate("MainWindow", "19:30"))
    item = self.tableWidget.item(24, 0)
    item.setText(_translate("MainWindow", "20:00"))
    self.tableWidget.setSortingEnabled(__sortingEnabled)

Tags: selfitemqttranslatefontsettextsetitemqtcore
1条回答
网友
1楼 · 发布于 2024-06-28 19:48:56

如果你是初学者,不建议修改设计的代码,因此最好创建实现逻辑的新类并使用设计,这些类将是Dialog和MainWindow。在

对话框: 为了方便地处理一些任务,我们将addClient和cancel按钮连接到accept和reject插槽,这样我们就可以以非模态的方式使用对话框,并使用exec_u(),如果被接受,则返回一个代码,如果被取消,则返回另一个代码。必须创建一个收集输入信息的方法。在

main窗口: 点击的记录客户端信号连接到一个显示对话框和收集对话框数据的插槽。创建一个逻辑来获取正确的行并添加元素。在

class Dialog(QDialog, Ui_Dialog):
    def __init__(self, parent=None):
        QDialog.__init__(self, parent)
        self.setupUi(self)
        # cancel
        self.pushButton_2.clicked.connect(self.reject)
        # accept
        self.pushButton.clicked.connect(self.accept)
        self.dateTimeEdit.setDisplayFormat("M/d/yy hh:mm")

    def data(self):
        master = self.comboBox_2.currentText()
        service = self.comboBox.currentText()
        name = self.lineEdit_2.text()
        contact_number = self.lineEdit.text()
        time = self.dateTimeEdit.time()
        return master, service, name, contact_number, time

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.addclient.clicked.connect(self.onAddClient)

    def onAddClient(self):
        dialog = Dialog(self)
        if dialog.exec_() == QDialog.Accepted:
            master, service, name, contact_number, time = dialog.data()
            row = int(QTime(8, 0).secsTo(time)/(30*60))
            if row >= 0:
                for k, text in enumerate([master, service, name, contact_number]):
                    self.tableWidget.setItem(row, k+1, QTableWidgetItem(text))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

输出:

enter image description here

enter image description here

相关问题 更多 >