1

I am working on a customers record programm,that will be used in beauty saloon.

Main interface.

So, I need to fill my table widget using this dialog window.

And each record need to be placed in exact time position. So,how can it be achieved?

Here is my Interface and Dialog code created by QtDesigner. Table Widget

 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) 

And Dialog window

class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(281, 176) self.comboBox = QtWidgets.QComboBox(Dialog) self.comboBox.setGeometry(QtCore.QRect(90, 10, 71, 22)) self.comboBox.setObjectName("comboBox") self.comboBox.addItem("") self.comboBox_2 = QtWidgets.QComboBox(Dialog) self.comboBox_2.setGeometry(QtCore.QRect(10, 10, 71, 22)) self.comboBox_2.setObjectName("comboBox_2") self.comboBox_2.addItem("") self.dateTimeEdit = QtWidgets.QDateTimeEdit(Dialog) self.dateTimeEdit.setGeometry(QtCore.QRect(10, 60, 194, 22)) self.dateTimeEdit.setObjectName("dateTimeEdit") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(10, 40, 91, 16)) self.label_2.setObjectName("label_2") self.lineEdit = QtWidgets.QLineEdit(Dialog) self.lineEdit.setGeometry(QtCore.QRect(150, 110, 113, 20)) self.lineEdit.setObjectName("lineEdit") self.label_3 = QtWidgets.QLabel(Dialog) self.label_3.setGeometry(QtCore.QRect(150, 90, 121, 16)) self.label_3.setObjectName("label_3") self.lineEdit_2 = QtWidgets.QLineEdit(Dialog) self.lineEdit_2.setGeometry(QtCore.QRect(10, 110, 113, 20)) self.lineEdit_2.setObjectName("lineEdit_2") self.label_4 = QtWidgets.QLabel(Dialog) self.label_4.setGeometry(QtCore.QRect(10, 90, 111, 16)) self.label_4.setObjectName("label_4") self.pushButton = QtWidgets.QPushButton(Dialog) self.pushButton.setGeometry(QtCore.QRect(150, 140, 111, 23)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Dialog) self.pushButton_2.setGeometry(QtCore.QRect(10, 140, 111, 23)) self.pushButton_2.setObjectName("pushButton_2") self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "Новый клиент")) self.comboBox.setItemText(0, _translate("Dialog", "Услуга")) self.comboBox_2.setItemText(0, _translate("Dialog", "Мастер")) self.label_2.setText(_translate("Dialog", "Дата и время:")) self.label_3.setText(_translate("Dialog", "Контактный номер:")) self.label_4.setText(_translate("Dialog", "Имя клиента")) self.pushButton.setText(_translate("Dialog", "Добавить клиента")) self.pushButton_2.setText(_translate("Dialog", "Отмена записи")) 

So i need inftomation in Dialog's input fields to be placed in exact time in a table widget. I'll appreciate any help! Sorry for QtDesigner abuse :D

This is a Record client button function that opens the dialog window

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() 

Entire MyWidnow Class

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) 
12
  • With which button should the dialog window be opened? Commented Oct 11, 2017 at 12:02
  • ou could place the entire MainWindow_UI widget Commented Oct 11, 2017 at 12:03
  • Record client button,but I already coded it. Commented Oct 11, 2017 at 12:07
  • I want to execute your code but I find it hard to rebuild your code, please put it completely Commented Oct 11, 2017 at 12:09
  • added full MyWindow class Commented Oct 11, 2017 at 12:10

1 Answer 1

1

Modifying the code of the design is not recommended if you are a beginner, so it is best to create new classes that implement the logic and use the design, these will be Dialog and MainWindow.

Dialog: To handle some tasks easily we will connect the addClient and cancel buttons to the accept and reject slots so that we can use the dialog in a non-modal way and use exec_() that returns one code if it is accepted and another if it is canceled. a method must be created that collects input information.

MainWindow: the clicked Record Client signal is connected to a slot where the dialog is displayed and the data of the dialog is collected. a logic is created to get the correct row and add the elements.

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_()) 

Output:

enter image description here

enter image description here

Sign up to request clarification or add additional context in comments.

5 Comments

There should be prefix QtWidgets. before name QDialog,QMainWindow. Works perfectly,Thanks!
There are many ways to import. I Use: from PyQt5.QtWidgets import QDialog, QMainWindow :P
If you want to manage the table as if they were pages I recommend using a QTableView, save the information in a database, use QSqlTableModel.
O,yeah,I Imported it in other way,that's why there was an error, your way is more convinient indeed :D

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.