Feb-21-2022, 12:15 AM
With the tweaks
#! /usr/bin/env python3 import sys import random as rnd from PyQt6.QtWidgets import(QGridLayout, QHBoxLayout, QMainWindow, QApplication, QPushButton, QSpinBox, QFrame, QLabel, QWidget, QGraphicsDropShadowEffect, QGraphicsView, QGraphicsScene, QTextEdit) from PyQt6.QtGui import (QLinearGradient, QCursor, QColor, QFont, QTextCursor) from PyQt6.QtCore import (Qt, QPointF) # Create the Gamble class class Gamble: # Define the lottery, choose which lottery we are playing # Powerball ends with 69 while mega millions ends with 70 def lottery(self, game, textbox): self.numbers = [] if game == 'powerball': end_number = 69 bonus_end_number = 26 elif game == 'mega millions': end_number = 70 bonus_end_number = 25 while len(self.numbers) < 6: number = rnd.randint(0, end_number) if str(number) not in self.numbers: self.numbers.append(f'{number:02d}') # Get the bonus number self.bonus = rnd.randint(0, bonus_end_number) cursor = QTextCursor(textbox.document()) cursor.insertHtml(f"<b><font color='blue'>{game.title()} Numbers</font></b>: {', '.join(self.numbers)} - \ <b><font color='blue'>Bonus Number</font></b>: {self.bonus}<br><br>") # Define the pick # lotto # rng depends on which playing 3 for pick3, 4 for pick4, and so on def pick(self, rng, textbox, game): self.numbers = [] for i in range(rng): number = rnd.randint(0,9) self.numbers.append(f'{number}') cursor = QTextCursor(textbox.document()) cursor.insertHtml(f'<b><font color="blue">{game.title()} Numbers: </font></b> {", ".join(self.numbers)} \ <br><br>') # Define keno def keno(self, spots, textbox, game): self.numbers = [] while len(self.numbers) < int(spots.value()): number = rnd.randint(1, 80) if str(number) not in self.numbers: self.numbers.append(f'{number}') cursor = QTextCursor(textbox.document()) cursor.insertHtml(f'<b><font color="blue">{game.title()} Numbers:</font></b> {", ".join(self.numbers)} \ <br><br>') # Define rouleere def roulette(self, textbox, game): black = ('black', ['28','26', '11', '20', '17', '22', '15', '24', '13', '10', '29', '8', '31', '6', '33', '4', '35', '2']) red = ('red', ['9', '30', '7', '32', '5', '34', '3', '36', '1', '27', '25', '12', '19', '18', '21', '16', '23', '14']) green = ('green',['0', '00']) numbs = rnd.choice([black,red,green]) choices = { 'odd even':['odd', 'even'], 'column':['1st', '2nd', '3rd'], 'dozen':['1-12', '13-24', '25-36'], 'color':['black', 'red'], 'low high':['Low 1-18', 'High 19-36'] } picks = [] picks.append(f'{numbs[0]} {rnd.choice(numbs[1])}') for key, val in choices.items(): picks.append(f'{key}: {rnd.choice(val)}') cursor = QTextCursor(textbox.document()) cursor.insertHtml(f'<b><font color="blue">{game.title()}</font></b><br>') cursor.insertHtml(f' <b><font color="purple">Possible Bets</font></b>:<br>') colors = ['red', 'green'] for data in picks: if colors[0] in data: color = 'red' elif colors[1] in data: color = 'green' else: color = 'black' cursor.insertHtml(f'{" "*8}<font color="{color}">{data}</font><br>') cursor.insertHtml('<br>') class Window(QMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('Number Generator') self.setMinimumWidth(500) gamble = Gamble() button = { 'powerball': lambda: gamble.lottery('powerball', self.textbox), 'mega millions': lambda: gamble.lottery('mega millions', self.textbox), 'pick5': lambda: gamble.pick(5, self.textbox, 'pick5'), 'pick4': lambda: gamble.pick(4, self.textbox, 'pick4'), 'pick3': lambda: gamble.pick(3, self.textbox, 'pick3'), 'keno': lambda: gamble.keno(spinner, self.textbox, 'keno'), 'roulette': lambda: gamble.roulette(self.textbox, 'roulette'), 'clear': lambda: self.textbox.clear() } # Create a container for widgets container = QGridLayout() container.addWidget(self.header(), 0, 0, 1, 4) hbox = QHBoxLayout() spinner = QSpinBox() spinner.setRange(1, 12) # Create the buttons col = 0 row = 1 for btn, cmd in button.items(): button = QPushButton(btn.title()) button.pressed.connect(cmd) if btn == 'keno': hbox.addWidget(button) hbox.addWidget(QLabel('Spots:')) hbox.addWidget(spinner) container.addLayout(hbox, row, col, 1, 1) else: container.addWidget(button, row, col, 1, 1) if col >= 3: row += 1 col = 0 else: col += 1 self.textbox = QTextEdit() self.textbox.setReadOnly(True) container.addWidget(self.textbox, 3, 0, 1, 4) widget = QWidget() widget.setLayout(container) self.setCentralWidget(widget) def header(self): shadow = QGraphicsDropShadowEffect() shadow.setBlurRadius(3) shadow.setOffset(2, 2) scene = QGraphicsScene() view = QGraphicsView() view.setScene(scene) view.setMaximumHeight(70) gradient = QLinearGradient(QPointF(0,0), QPointF(300,300)) gradient.setColorAt(0, QColor(200,200,200)) gradient.setColorAt(1, QColor(250,250,250)) scene.setBackgroundBrush(gradient) font = QFont('comic sans ms', 30) font.setBold(True) text = scene.addText('Number Generator') text.setFont(font) text.setDefaultTextColor(QColor(250,150,105)) text.setGraphicsEffect(shadow) return view def main(): app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec()) if __name__ == '__main__': main()
I welcome all feedback.
The only dumb question, is one that doesn't get asked.
My Github
How to post code using bbtags
The only dumb question, is one that doesn't get asked.
My Github
How to post code using bbtags