PyQt не работает кнопка
Пишу проект работающий с pymongo и PyQt5.
Интерфейс сделан в отдельном файле через Qt Designer и конвертирован в .py файл.
Хочу привязать кнопки к функциям. При нажатии на кнопку ничего не происходит. В шелле команды выполняются как положено.
Файл main.py
import pymongo
import pprint
from PyQt5 import QtWidgets
from gui import Ui_MainWindow # импорт нашего сгенерированного файла
import sys
connection = pymongo.MongoClient('localhost',27017)
database = connection['IITUabiturients']
collection = database['List']
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(mywindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.namesearchpushButton.clicked.connect(self.namesearch)
self.IDsearchpushButton.clicked.connect(self.IDsearch)
self.IDdeletepushButton.clicked.connect(self.IDdelete)
self.sortpushButton.clicked.connect(self.sort)
self.filterpushButton.clicked.connect(self.filter)
self.addpushButton.clicked.connect(self.add)
"def initUI(self):"
def namesearch(self):
searchname = self.namelineEdit.text()
def IDsearch(self):
searchID = self.IDEdit.text()
def IDdelete(self):
deleteID = self.deletelineEdit.text()
def sort(self):
sortoption = str(sortcombobox.currentText())
def filter(self):
filteroption = str(filtercombobox.currentText())
def add(self):
addname = self.addnamelineEdit.text()
adddate = self.adddatelineEdit.text()
addcity = self.addcitylineEdit.text()
addstudy = self.addstudylineEdit.text()
addgrade = self.addgradelineEdit.text()
addgold = self.addgoldlineEdit.text()
addproject = self.addprojectlineEdit.text()
addolimp = self.addolimplineEdit.text()
adddict = {}
adddict["ФИО"]=addname
adddict["Дата Рождения"]=adddate
adddict["Город"]=addcity
adddict["Школа/Колледж"]=addstudy
adddict["Балл ЕНТ"]=addgrade
adddict["Наличие Алтын Белгi"]=addgold
adddict["Победа в международном проекте"]=addproject
adddict["Победа в олимпиадах"]=addolimp
addid = collection.insert_one(adddict)
rawtable = collection.find()
prettytable = pprint.pprint(rawtable)
self.outputtextEdit.insertPlainText(prettytable)
def main():
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(w)
w.show()
sys.exit(app.exec_())
main()
Ответы (2 шт):
Вы создали класс MainWindow, но никак с ним не взаимодействуете. Попробуйте так:
import sys
import re
from PyQt5 import QtGui, QtCore, QtWidgets
import pymongo
import pprint
from gui import Ui_MainWindow
connection = pymongo.MongoClient('localhost',27017)
database = connection['IITUabiturients']
collection = database['List']
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__() # +
...
self.outputtextEdit.insertPlainText(prettytable)
if __name__=='__main__':
app = QtWidgets.QApplication(sys.argv)
w = MainWindow() # <<<----
w.show()
sys.exit(app.exec_())
Update
Чтобы избавиться от ошибки
self.namesearchpushButton.clicked.connect(self.namesearch) AttributeError:
'MainWindow' object has no attribute 'namesearchpushButton' namesearchpushButton
Сделайте так и ничего бльше менять не надо:
...
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
...
Братан, можно с тобой как нибудь связаться? Я 2ой день мучаюсь, не могу сделать связь кода PyCharm с шаблоном в Qt Designer, также, пытаюсь сделать конвертацию, то есть, все то что ты уже сделал. Хелпани плиз, я тоже новичок.
Я знаю что нельзя просить помощи в ответе, но ты не указал никаких контактных данных чтобы я мог написать тебе напрямую