Помогите пожалуйста с кодом на Python, нужно чтобы при нажатии на next_Button данные отправлялись на сервер
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6 import QtCore, QtGui, QtWidgets
from pymongo import MongoClient
from bson.objectid import ObjectId
import datetime
class Ui_Registration(object):
def setup_connections(self): # новый метод для вызова кнопки
self.next_Button.clicked.connect(self.on_next_button_clicked)
def setupUi(self, Registration):
Registration.setObjectName("Registration")
Registration.resize(700, 700)
Registration.setMinimumSize(QtCore.QSize(700, 700))
Registration.setMaximumSize(QtCore.QSize(700, 700))
font = QtGui.QFont()
font.setFamily("Segoe UI Variable Text Semibold")
font.setBold(True)
font.setWeight(75)
Registration.setFont(font)
Registration.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
Registration.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.ActionsContextMenu)
Registration.setAcceptDrops(False)
Registration.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
Registration.setAutoFillBackground(False)
Registration.setStyleSheet("font family: Segoe UI Variable Text Semibold")
self.label = QtWidgets.QLabel(parent=Registration)
self.label.setGeometry(QtCore.QRect(270, 50, 159, 36))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Highlight, brush)
self.label.setPalette(palette)
font = QtGui.QFont()
font.setFamily("Segoe UI Variable Text Semibold")
font.setPointSize(20)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("text-align:center;\n"
"")
self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit.setGeometry(QtCore.QRect(200, 120, 300, 45))
self.lineEdit.setTabletTracking(False)
self.lineEdit.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit.setAutoFillBackground(False)
self.lineEdit.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_2.setGeometry(QtCore.QRect(200, 180, 300, 45))
self.lineEdit_2.setTabletTracking(False)
self.lineEdit_2.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_2.setAutoFillBackground(False)
self.lineEdit_2.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_2.setObjectName("lineEdit_2")
self.lineEdit_4 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_4.setGeometry(QtCore.QRect(200, 240, 300, 45))
self.lineEdit_4.setTabletTracking(False)
self.lineEdit_4.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_4.setAutoFillBackground(False)
self.lineEdit_4.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_4.setObjectName("lineEdit_4")
self.lineEdit_3 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_3.setGeometry(QtCore.QRect(200, 300, 300, 45))
self.lineEdit_3.setTabletTracking(False)
self.lineEdit_3.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_3.setAutoFillBackground(False)
self.lineEdit_3.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_3.setObjectName("lineEdit_3")
self.lineEdit_5 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_5.setGeometry(QtCore.QRect(200, 360, 300, 45))
self.lineEdit_5.setTabletTracking(False)
self.lineEdit_5.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_5.setAutoFillBackground(False)
self.lineEdit_5.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_5.setObjectName("lineEdit_5")
self.lineEdit_6 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_6.setGeometry(QtCore.QRect(200, 420, 300, 45))
self.lineEdit_6.setTabletTracking(False)
self.lineEdit_6.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_6.setAutoFillBackground(False)
self.lineEdit_6.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_6.setObjectName("lineEdit_6")
self.comboBox = QtWidgets.QComboBox(parent=Registration)
self.comboBox.setGeometry(QtCore.QRect(200, 540, 300, 45))
font = QtGui.QFont()
font.setFamily("Segoe UI Variable Text Semibold")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.comboBox.setFont(font)
self.comboBox.setDuplicatesEnabled(False)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.setItemText(0, "")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.next_Button = QtWidgets.QPushButton(parent=Registration)
self.next_Button.setGeometry(QtCore.QRect(299, 600, 100, 50))
self.next_Button.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.next_Button.setStyleSheet("\n"
"font: 63 14pt \"Segoe UI Variable Text Semibold\";\n"
"text-align: center;\n"
"\n"
"")
self.next_Button.setObjectName("next_Button") #кнопка
self.lineEdit_7 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_7.setGeometry(QtCore.QRect(200, 480, 300, 45))
self.lineEdit_7.setTabletTracking(False)
self.lineEdit_7.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_7.setAutoFillBackground(False)
self.lineEdit_7.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_7.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.lineEdit_7.setObjectName("lineEdit_7")
self.pushButton_2 = QtWidgets.QPushButton(parent=Registration)
self.pushButton_2.setGeometry(QtCore.QRect(277, 659, 151, 23))
self.pushButton_2.setStyleSheet("\n"
"\n"
" background: none;\n"
" border: none;\n"
" padding: 0;\n"
" font: inherit;\n"
" color: blue;\n"
" text-decoration: underline;\n"
" cursor: pointer;\n"
"\n"
"")
self.pushButton_2.setObjectName("pushButton_2")
self.retranslateUi(Registration)
QtCore.QMetaObject.connectSlotsByName(Registration)
def retranslateUi(self, Registration):
_translate = QtCore.QCoreApplication.translate
Registration.setWindowTitle(_translate("Registration", "Регистрация"))
self.label.setText(_translate("Registration", "Регистрация"))
self.lineEdit.setPlaceholderText(_translate("Registration", "Фамилия"))
self.lineEdit_2.setPlaceholderText(_translate("Registration", "Имя"))
self.lineEdit_4.setPlaceholderText(_translate("Registration", "Отчество"))
self.lineEdit_3.setPlaceholderText(_translate("Registration", "Паспорт"))
self.lineEdit_5.setPlaceholderText(_translate("Registration", "ИНН"))
self.lineEdit_6.setPlaceholderText(_translate("Registration", "СНИЛС"))
self.comboBox.setItemText(1, _translate("Registration", "Директор"))
self.comboBox.setItemText(2, _translate("Registration", "Специалист"))
self.comboBox.setItemText(3, _translate("Registration", "Бухгалтер"))
self.next_Button.setText(_translate("Registration", "Далее"))
self.lineEdit_7.setPlaceholderText(_translate("Registration", "Пароль"))
self.pushButton_2.setText(_translate("Registration", "Уже зарегистрировались?"))
client = MongoClient("**********************************")
# не обращай внимания что нет шифрования это для курсовой)
db = client.users_data
collection = db.user
#функция которая должна вызываться при нажатии на next_Button
def on_next_button_clicked(self):
collection.insert_one({
'Фамилия': self.lineEdit.text(),
'Имя': self.lineEdit_2.text(),
'Отчество': self.lineEdit_4.text(),
'Паспорт': self.lineEdit_3.text(),
'ИНН': self.lineEdit_5.text(),
'Cнилс': self.lineEdit_6.text(),
'Пароль': self.lineEdit_7.text(),
'Должность': self.comboBox.currentText(),
'Дата': datetime.datetime.now()
})
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
ВСЕГДА предоставляйте минимально-воспроизводимый пример, который демонстрирует проблему.
НИКОГДА НЕ ИЗМЕНЯЙТЕ код, сгенерированный Qt Designer, НИКОГДА.
Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.Я не могу проверить ваш код, но попробуйте продолжить то, что я вам написал
'''
from PyQt6 import QtCore, QtGui, QtWidgets # PyQt6
'''
from PyQt5 import QtCore, QtGui, QtWidgets # PyQt5
# ?from pymongo import MongoClient
# ?from bson.objectid import ObjectId
import datetime
class Ui_Registration(object):
# ? def setup_connections(self): # новый метод для вызова кнопки
# ? self.next_Button.clicked.connect(self.on_next_button_clicked)
def setupUi(self, Registration):
Registration.setObjectName("Registration")
Registration.resize(700, 700)
Registration.setMinimumSize(QtCore.QSize(700, 700))
Registration.setMaximumSize(QtCore.QSize(700, 700))
font = QtGui.QFont()
font.setFamily("Segoe UI Variable Text Semibold")
font.setBold(True)
font.setWeight(75)
Registration.setFont(font)
Registration.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
Registration.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.ActionsContextMenu)
Registration.setAcceptDrops(False)
Registration.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
Registration.setAutoFillBackground(False)
Registration.setStyleSheet("font family: Segoe UI Variable Text Semibold")
self.label = QtWidgets.QLabel(parent=Registration)
self.label.setGeometry(QtCore.QRect(270, 50, 159, 36))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Active, QtGui.QPalette.ColorRole.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Inactive, QtGui.QPalette.ColorRole.Highlight, brush)
brush = QtGui.QBrush(QtGui.QColor(0, 120, 215))
brush.setStyle(QtCore.Qt.BrushStyle.SolidPattern)
palette.setBrush(QtGui.QPalette.ColorGroup.Disabled, QtGui.QPalette.ColorRole.Highlight, brush)
self.label.setPalette(palette)
font = QtGui.QFont()
font.setFamily("Segoe UI Variable Text Semibold")
font.setPointSize(20)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setStyleSheet("text-align:center;\n"
"")
self.label.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.label.setObjectName("label")
self.lineEdit = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit.setGeometry(QtCore.QRect(200, 120, 300, 45))
self.lineEdit.setTabletTracking(False)
self.lineEdit.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit.setAutoFillBackground(False)
self.lineEdit.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_2.setGeometry(QtCore.QRect(200, 180, 300, 45))
self.lineEdit_2.setTabletTracking(False)
self.lineEdit_2.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_2.setAutoFillBackground(False)
self.lineEdit_2.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_2.setObjectName("lineEdit_2")
self.lineEdit_4 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_4.setGeometry(QtCore.QRect(200, 240, 300, 45))
self.lineEdit_4.setTabletTracking(False)
self.lineEdit_4.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_4.setAutoFillBackground(False)
self.lineEdit_4.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_4.setObjectName("lineEdit_4")
self.lineEdit_3 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_3.setGeometry(QtCore.QRect(200, 300, 300, 45))
self.lineEdit_3.setTabletTracking(False)
self.lineEdit_3.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_3.setAutoFillBackground(False)
self.lineEdit_3.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_3.setObjectName("lineEdit_3")
self.lineEdit_5 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_5.setGeometry(QtCore.QRect(200, 360, 300, 45))
self.lineEdit_5.setTabletTracking(False)
self.lineEdit_5.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_5.setAutoFillBackground(False)
self.lineEdit_5.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_5.setObjectName("lineEdit_5")
self.lineEdit_6 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_6.setGeometry(QtCore.QRect(200, 420, 300, 45))
self.lineEdit_6.setTabletTracking(False)
self.lineEdit_6.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_6.setAutoFillBackground(False)
self.lineEdit_6.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_6.setObjectName("lineEdit_6")
self.comboBox = QtWidgets.QComboBox(parent=Registration)
self.comboBox.setGeometry(QtCore.QRect(200, 540, 300, 45))
font = QtGui.QFont()
font.setFamily("Segoe UI Variable Text Semibold")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.comboBox.setFont(font)
self.comboBox.setDuplicatesEnabled(False)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.setItemText(0, "")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.next_Button = QtWidgets.QPushButton(parent=Registration)
self.next_Button.setGeometry(QtCore.QRect(299, 600, 100, 50))
self.next_Button.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.next_Button.setStyleSheet("\n"
"font: 63 14pt \"Segoe UI Variable Text Semibold\";\n"
"text-align: center;\n"
"\n"
"")
self.next_Button.setObjectName("next_Button") #кнопка
self.lineEdit_7 = QtWidgets.QLineEdit(parent=Registration)
self.lineEdit_7.setGeometry(QtCore.QRect(200, 480, 300, 45))
self.lineEdit_7.setTabletTracking(False)
self.lineEdit_7.setLayoutDirection(QtCore.Qt.LayoutDirection.LeftToRight)
self.lineEdit_7.setAutoFillBackground(False)
self.lineEdit_7.setStyleSheet("font: 63 14pt \"Segoe UI Variable Text Semibold\";")
self.lineEdit_7.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
self.lineEdit_7.setObjectName("lineEdit_7")
self.pushButton_2 = QtWidgets.QPushButton(parent=Registration)
self.pushButton_2.setGeometry(QtCore.QRect(277, 659, 151, 23))
self.pushButton_2.setStyleSheet("\n"
"\n"
" background: none;\n"
" border: none;\n"
" padding: 0;\n"
" font: inherit;\n"
" color: blue;\n"
" text-decoration: underline;\n"
" cursor: pointer;\n"
"\n"
"")
self.pushButton_2.setObjectName("pushButton_2")
self.retranslateUi(Registration)
QtCore.QMetaObject.connectSlotsByName(Registration)
def retranslateUi(self, Registration):
_translate = QtCore.QCoreApplication.translate
Registration.setWindowTitle(_translate("Registration", "Регистрация"))
self.label.setText(_translate("Registration", "Регистрация"))
self.lineEdit.setPlaceholderText(_translate("Registration", "Фамилия"))
self.lineEdit_2.setPlaceholderText(_translate("Registration", "Имя"))
self.lineEdit_4.setPlaceholderText(_translate("Registration", "Отчество"))
self.lineEdit_3.setPlaceholderText(_translate("Registration", "Паспорт"))
self.lineEdit_5.setPlaceholderText(_translate("Registration", "ИНН"))
self.lineEdit_6.setPlaceholderText(_translate("Registration", "СНИЛС"))
self.comboBox.setItemText(1, _translate("Registration", "Директор"))
self.comboBox.setItemText(2, _translate("Registration", "Специалист"))
self.comboBox.setItemText(3, _translate("Registration", "Бухгалтер"))
self.next_Button.setText(_translate("Registration", "Далее"))
self.lineEdit_7.setPlaceholderText(_translate("Registration", "Пароль"))
self.pushButton_2.setText(_translate("Registration", "Уже зарегистрировались?"))
class MainWindow(QtWidgets.QWidget, Ui_Registration):
def __init__(self):
super().__init__()
self.setupUi(self)
'''
client = MongoClient("**********************************")
# не обращай внимания что нет шифрования это для курсовой)
db = client.users_data
self.collection = db.user
# ----> ^^^^^ <---------------------------------------------------------------
'''
self.next_Button.clicked.connect(self.on_next_button_clicked) # +++
#функция которая должна вызываться при нажатии на next_Button
def on_next_button_clicked(self):
fio = self.lineEdit.text()
...
password = self.lineEdit_7.text()
# ...
if not fio and not password:
...
msg = QtWidgets.QMessageBox.information(
self,
'Внимание',
'Заполните все необходимые поля.'
)
return
print(f'\nфункция, которая должна вызываться при нажатии на next_Button: '
f'{self.sender().text()}') #
'''
# ----> vvvvv <---------------------------------------------------------------
self.collection.insert_one({
'Фамилия': fio,
'Имя': self.lineEdit_2.text(),
'Отчество': self.lineEdit_4.text(),
'Паспорт': self.lineEdit_3.text(),
'ИНН': self.lineEdit_5.text(),
'Cнилс': self.lineEdit_6.text(),
'Пароль': self.lineEdit_7.text(),
'Должность': self.comboBox.currentText(),
'Дата': datetime.datetime.now()
})
'''
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
