Python Forum
help needed running a simple function in pyqt5
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
help needed running a simple function in pyqt5
#8
If spots is less than numbers, you will get duplicates or it may go into an infinity loop.
import random as rnd
import sys
from PyQt5.QtWidgets import (QMainWindow, QApplication, QWidget, QPushButton, QGridLayout, QLabel,
QLineEdit, QListWidget, QMessageBox)


class Window(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        # Container
        container = QGridLayout()

        label = QLabel('How many numbers?')
        label2 = QLabel('How many spots?')

        self.entry = QLineEdit()
        self.entry.setPlaceholderText('How many numbers?')
        self.entry.setStyleSheet('border: 1px solid black;')

        self.entry2 = QLineEdit()
        self.entry2.setPlaceholderText('How many spots?')
        self.entry2.setStyleSheet('border: 1px solid black;')

        button = QPushButton('Submit')
        button.clicked.connect(lambda: self.picker(self.entry, self.entry2))
        button2 = QPushButton('Clear')
        button2.clicked.connect(self.clear)

        self.listbox = QListWidget()

        container.addWidget(label, 0, 0, 1, 1)
        container.addWidget(self.entry, 0, 1, 1, 1)
        container.addWidget(label2, 1, 0, 1, 1)
        container.addWidget(self.entry2, 1, 1, 1, 1)
        container.addWidget(button, 2, 0, 1, 1)
        container.addWidget(button2, 2, 1, 1, 1)
        container.addWidget(self.listbox, 3, 0, 1, 2)

        widget = QWidget()
        widget.setLayout(container)
        self.setCentralWidget(widget)

    def clear(self):
        self.listbox.clear()

    def picker(self, how_many, spots):
        messages = ['Spot\'s can not be less than number', 'Only numbers can be entered']
        error = 0
        try:
            spots = int(spots.text())
            how_many = int(how_many.text())
            if spots < how_many:
                text = messages[0]
                error += 1
        except ValueError:
            error += 1
            text = messages[1]

        if error > 0:
            msg = QMessageBox()
            msg.setText(text)
            msg.setIcon(QMessageBox.Warning)
            msg.setWindowTitle('Warning Error!')
            msg.setStandardButtons(QMessageBox.Ok)
            msg.exec_()
        else:
            picks = []
            while len(picks) < how_many:
                pick = rnd.randint(1, spots)
                if str(pick) not in picks:
                    picks.append(f'{pick}')
            nums = ', '.join(picks)
            self.listbox.addItem(nums)
        self.entry.clear()
        self.entry2.clear()


def main():
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

main()
I welcome all feedback.
The only dumb question, is one that doesn't get asked.
My Github
How to post code using bbtags


Reply


Messages In This Thread
RE: help needed running a simple function in pyqt5 - by menator01 - Feb-15-2022, 05:50 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  How To Make A PyQt5 Progress Bar Run While Executing A Function rcwildabeast 1 402 Apr-26-2024, 02:18 AM
Last Post: menator01
  simple tkinter question function call not opening image gr3yali3n 5 3,632 Aug-02-2022, 09:13 PM
Last Post: woooee
  Tkinter won't run my simple function AthertonH 6 4,087 May-03-2022, 02:33 PM
Last Post: deanhystad
  [Tkinter] Have tkinter button toggle on and off a continuously running function AnotherSam 5 5,155 Oct-01-2021, 05:00 PM
Last Post: Yoriz
  A Simple PyQt5 Class zoro 15 5,922 Mar-02-2020, 07:25 PM
Last Post: micseydel
  Refresh image in label after every 1s using simple function jenkins43 1 5,543 Jul-28-2019, 02:49 PM
Last Post: Larz60+
  Huge code problems (buttons(PyQt5),PyQt5 Threads, Windows etc) ZenWoR 0 2,893 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