Python Forum
Need code for buttons to move to previous and next documents
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Need code for buttons to move to previous and next documents
#1
Hello everyone,

Greetings from Brazil! I'm a beginner programmer learning Python 3. I created a form in Qt5 Designer to navigate through my mongoDB database.

The insert document form works great. Also, I was able to create 50% of the navigation form funcionality. It has four buttons to display documents: First, Previous, Next and Last. The buttons for First and Last document work, but I'm strugging with Previous and Next.

They need to step forward and back in the collection every time the buttons are pressed and I can't figure out how to do this. Suggestions are welcome! Please refer to my code below. I really appreciate your time and help. Thanks a lot.

This is what I have achieved so far:

import sys
import pymongo.mongo_client
from PyQt5 import QtCore, QtWidgets

connection = pymongo.MongoClient('localhost', 27017)
database = connection['bremi691_ead']
collection = database['usuarios']

global first_doc
global previous_doc
global next_doc
global last_doc

class Ui_Dialog(object):

    def __init__(self):
        self.lineEdit_name = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_email = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_pwd = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_market = QtWidgets.QLineEdit(Dialog)

        self.pushButton_first = QtWidgets.QPushButton(Dialog)
        self.pushButton_previous = QtWidgets.QPushButton(Dialog)
        self.pushButton_next = QtWidgets.QPushButton(Dialog)
        self.pushButton_last = QtWidgets.QPushButton(Dialog)

    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(448, 300)

        self.lineEdit_name.setGeometry(QtCore.QRect(130, 50, 241, 21))
        self.lineEdit_name.setInputMethodHints(QtCore.Qt.ImhUppercaseOnly)
        self.lineEdit_name.setObjectName("lineEdit_name")

        self.lineEdit_email.setGeometry(QtCore.QRect(130, 90, 191, 21))
        self.lineEdit_email.setInputMethodHints(QtCore.Qt.ImhEmailCharactersOnly)
        self.lineEdit_email.setObjectName("lineEdit_email")

        self.lineEdit_pwd.setGeometry(QtCore.QRect(130, 130, 131, 21))
        self.lineEdit_pwd.setInputMethodHints(QtCore.Qt.ImhSensitiveData | QtCore.Qt.ImhUppercaseOnly)
        self.lineEdit_pwd.setObjectName("lineEdit_pwd")

        self.lineEdit_market.setGeometry(QtCore.QRect(130, 170, 131, 21))
        self.lineEdit_market.setInputMethodHints(QtCore.Qt.ImhUppercaseOnly)
        self.lineEdit_market.setObjectName("lineEdit_market")

        self.pushButton_first.setGeometry(QtCore.QRect(70, 240, 61, 28))
        self.pushButton_first.setObjectName("pushButton_first")
        self.pushButton_first.clicked.connect(ShowFirst)

        self.pushButton_previous.setGeometry(QtCore.QRect(150, 240, 61, 28))
        self.pushButton_previous.setObjectName("pushButton_previous")
        self.pushButton_previous.clicked.connect(ShowPrevious)

        self.pushButton_next.setGeometry(QtCore.QRect(230, 240, 61, 28))
        self.pushButton_next.setObjectName("pushButton_next")
        self.pushButton_next.clicked.connect(ShowNext)

        self.pushButton_last.setGeometry(QtCore.QRect(310, 240, 61, 28))
        self.pushButton_last.setObjectName("pushButton_last")
        self.pushButton_last.clicked.connect(ShowLast)

        self.retranslateUi(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton_first.setText(_translate("Dialog", "First"))
        self.pushButton_previous.setText(_translate("Dialog", "Previous"))
        self.pushButton_next.setText(_translate("Dialog", "Next"))
        self.pushButton_last.setText(_translate("Dialog", "Last"))

        ShowFirst()


def ShowFirst():
    global first_doc
    coll = collection.find().sort("nome", 1).limit(1)
    for first_doc in coll: ('{0}'.format(first_doc['nome']))
    ui.lineEdit_name.setText(str(first_doc['nome']))
    ui.lineEdit_email.setText(str(first_doc['email'])),
    ui.lineEdit_pwd.setText(str(first_doc['senha'])),
    ui.lineEdit_market.setText(str(first_doc['como_chegou']))
    coll.close()


def ShowPrevious():
    print("Insert code to move to previous document")


def ShowNext():
    print("Insert code to move to next document")


def ShowLast():
    global last_doc
    coll = collection.find().sort("nome", -1).limit(1)
    for last_doc in coll: ('{0}'.format(last_doc['nome']))
    ui.lineEdit_name.setText(str(last_doc['nome']))
    ui.lineEdit_email.setText(str(last_doc['email'])),
    ui.lineEdit_pwd.setText(str(last_doc['senha'])),
    ui.lineEdit_market.setText(str(last_doc['como_chegou']))
    coll.close()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())
Best regards.
Reply
#2
I SOLVED THE PROBLEM. Check the link below to see my solution:

https://python-forum.io/Thread-PyQt-Tuto...navigation

Thanks.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [PyQt] Using QSyntaxHighlighter to query a documents format DrakeSoft 7 1,622 Sep-30-2022, 06:02 PM
Last Post: deanhystad
  [Tkinter] previous and next buttons rwahdan 1 3,313 Jul-13-2021, 06:35 PM
Last Post: deanhystad
  Huge code problems (buttons(PyQt5),PyQt5 Threads, Windows etc) ZenWoR 0 2,785 Apr-06-2019, 11:15 PM
Last Post: ZenWoR

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020