Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from functools import partial
- from random import randint
- from PySide2.QtCore import Qt
- from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QInputDialog
- class MainWidget(QWidget):
- def __init__(self):
- super(MainWidget, self).__init__()
- self.buttonDict = {"More Modifiers?": "moreModifiers", "Remove Addional Mod Inputs": "removeAddnlInputs","D10": 10}
- self.inputDict = {"dieDisplay": "", "modDisplay": "", "modInput": ""}
- self.additionalInputs = {}
- self.setWindowTitle("DiceApp4.1")
- self.setContentsMargins(5, 5, 5, 5)
- self.vertCol = QVBoxLayout(self)
- self.generateinputs()
- self.setinputproperties()
- self.generatebuttons()
- def generateinputs(self):
- self.inputs = {}
- for key, val in self.inputDict.items():
- self.inputs[key] = QLineEdit(key, self)
- self.inputs[key].setText(val)
- self.vertCol.addWidget(self.inputs[key])
- def setinputproperties(self):
- self.inputs['dieDisplay'].setPlaceholderText("Unmodified Roll")
- self.inputs['dieDisplay'].setReadOnly(True)
- self.inputs['dieDisplay'].setAlignment(Qt.AlignRight)
- self.inputs['dieDisplay'].setToolTip("Unmodified die roll")
- self.inputs['modDisplay'].setPlaceholderText("Modified Roll")
- self.inputs['modDisplay'].setReadOnly(True)
- self.inputs['modDisplay'].setAlignment(Qt.AlignRight)
- self.inputs['modDisplay'].setToolTip("Die roll with Modifier")
- self.inputs['modInput'].setPlaceholderText("Modifier")
- self.inputs['modInput'].setAlignment(Qt.AlignRight)
- self.inputs['modInput'].setToolTip("Modifier(Put a - for a negative modifier)")
- self.inputs['modInput'].setFocus()
- def generatebuttons(self):
- for key, val in self.buttonDict.items():
- buttons = QPushButton(key, self)
- if self.buttonDict[key] == "moreModifiers":
- buttons.setToolTip("Add more modifiers")
- buttons.clicked.connect(partial(self.openinputwindow))
- elif self.buttonDict[key] == "removeAddnlInputs":
- buttons.setToolTip("Remove the Additional modifier inputs")
- buttons.clicked.connect(partial(self.removeaddedinputs))
- else:
- buttons.setToolTip("Roll D" + str(self.buttonDict[key]) + " (1 - " + str(self.buttonDict[key]) + ")")
- buttons.clicked.connect(partial(self.rolldie, val))
- self.vertCol.addWidget(buttons)
- def openinputwindow(self):
- text, okPressed = QInputDialog.getText(self, "", "How many additional modifiers do you have?",
- QLineEdit.Normal, "")
- if okPressed and text != '':
- self.numInputsToAdd = int(text)
- self.addmoremodinputs()
- def addmoremodinputs(self):
- for i in range(self.numInputsToAdd):
- self.additionalInputs["addnlInput" + str(i + 1)] = QLineEdit(self)
- self.additionalInputs["addnlInput" + str(i + 1)].setAlignment(Qt.AlignRight)
- self.additionalInputs["addnlInput" + str(i + 1)].setText("1")
- self.additionalInputs["addnlInput" + str(i + 1)].setPlaceholderText("Additional Mod Input #" + str(i + 1))
- self.vertCol.addWidget(self.additionalInputs["addnlInput" + str(i + 1)])
- def removeaddedinputs(self):
- try:
- for i, b in self.additionalInputs.items():
- self.vertCol.removeWidget(self.additionalInputs[i])
- self.additionalInputs[i].deleteLater()
- self.additionalInputs[i] = None
- self.adjustSize()
- except AttributeError:
- print("")
- def rolldie(self, n):
- self.dieResult = str(randint(1, n))
- self.newinputlist = {}
- self.inputs['modInput'].setText("1")
- if not self.inputs['modInput'].text():
- self.inputs['dieDisplay'].setText(self.dieResult)
- self.inputs['modDisplay'].setText("")
- else:
- try:
- for keys, vals in self.additionalInputs.items():
- self.newinputlist[keys] = self.additionalInputs[keys].text()
- print(self.newinputlist[keys])
- self.modDieResult = str(int(self.dieResult) + int(self.inputs['modInput'].text()) + int(self.newinputlist[keys]))
- self.inputs['dieDisplay'].setText(self.dieResult)
- self.inputs['modDisplay'].setText(self.modDieResult)
- except ValueError:
- self.inputs['dieDisplay'].setText(self.dieResult)
- self.inputs['modInput'].setText("")
- self.inputs['modDisplay'].setText("")
- if __name__ == "__main__":
- app = QApplication()
- w = MainWidget()
- w.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement