Advertisement
Guest User

Untitled

a guest
Feb 9th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.87 KB | None | 0 0
  1. from functools import partial
  2. from random import randint
  3. from PySide2.QtCore import Qt
  4. from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLineEdit, QInputDialog
  5.  
  6.  
  7. class MainWidget(QWidget):
  8.     def __init__(self):
  9.         super(MainWidget, self).__init__()
  10.         self.buttonDict = {"More Modifiers?": "moreModifiers", "Remove Addional Mod Inputs": "removeAddnlInputs","D10": 10}
  11.         self.inputDict = {"dieDisplay": "", "modDisplay": "", "modInput": ""}
  12.         self.additionalInputs = {}
  13.         self.setWindowTitle("DiceApp4.1")
  14.         self.setContentsMargins(5, 5, 5, 5)
  15.         self.vertCol = QVBoxLayout(self)
  16.         self.generateinputs()
  17.         self.setinputproperties()
  18.         self.generatebuttons()
  19.  
  20.     def generateinputs(self):
  21.         self.inputs = {}
  22.         for key, val in self.inputDict.items():
  23.             self.inputs[key] = QLineEdit(key, self)
  24.             self.inputs[key].setText(val)
  25.             self.vertCol.addWidget(self.inputs[key])
  26.  
  27.     def setinputproperties(self):
  28.         self.inputs['dieDisplay'].setPlaceholderText("Unmodified Roll")
  29.         self.inputs['dieDisplay'].setReadOnly(True)
  30.         self.inputs['dieDisplay'].setAlignment(Qt.AlignRight)
  31.         self.inputs['dieDisplay'].setToolTip("Unmodified die roll")
  32.         self.inputs['modDisplay'].setPlaceholderText("Modified Roll")
  33.         self.inputs['modDisplay'].setReadOnly(True)
  34.         self.inputs['modDisplay'].setAlignment(Qt.AlignRight)
  35.         self.inputs['modDisplay'].setToolTip("Die roll with Modifier")
  36.         self.inputs['modInput'].setPlaceholderText("Modifier")
  37.         self.inputs['modInput'].setAlignment(Qt.AlignRight)
  38.         self.inputs['modInput'].setToolTip("Modifier(Put a - for a negative modifier)")
  39.         self.inputs['modInput'].setFocus()
  40.  
  41.     def generatebuttons(self):
  42.         for key, val in self.buttonDict.items():
  43.             buttons = QPushButton(key, self)
  44.             if self.buttonDict[key] == "moreModifiers":
  45.                 buttons.setToolTip("Add more modifiers")
  46.                 buttons.clicked.connect(partial(self.openinputwindow))
  47.             elif self.buttonDict[key] == "removeAddnlInputs":
  48.                 buttons.setToolTip("Remove the Additional modifier inputs")
  49.                 buttons.clicked.connect(partial(self.removeaddedinputs))
  50.             else:
  51.                 buttons.setToolTip("Roll D" + str(self.buttonDict[key]) + " (1 - " + str(self.buttonDict[key]) + ")")
  52.                 buttons.clicked.connect(partial(self.rolldie, val))
  53.             self.vertCol.addWidget(buttons)
  54.  
  55.  
  56.     def openinputwindow(self):
  57.         text, okPressed = QInputDialog.getText(self, "", "How many additional modifiers do you have?",
  58.                                                QLineEdit.Normal, "")
  59.         if okPressed and text != '':
  60.             self.numInputsToAdd = int(text)
  61.             self.addmoremodinputs()
  62.  
  63.     def addmoremodinputs(self):
  64.         for i in range(self.numInputsToAdd):
  65.             self.additionalInputs["addnlInput" + str(i + 1)] = QLineEdit(self)
  66.             self.additionalInputs["addnlInput" + str(i + 1)].setAlignment(Qt.AlignRight)
  67.             self.additionalInputs["addnlInput" + str(i + 1)].setText("1")
  68.             self.additionalInputs["addnlInput" + str(i + 1)].setPlaceholderText("Additional Mod Input #" + str(i + 1))
  69.             self.vertCol.addWidget(self.additionalInputs["addnlInput" + str(i + 1)])
  70.  
  71.     def removeaddedinputs(self):
  72.         try:
  73.             for i, b in self.additionalInputs.items():
  74.                 self.vertCol.removeWidget(self.additionalInputs[i])
  75.                 self.additionalInputs[i].deleteLater()
  76.                 self.additionalInputs[i] = None
  77.                 self.adjustSize()
  78.         except AttributeError:
  79.             print("")
  80.  
  81.     def rolldie(self, n):
  82.         self.dieResult = str(randint(1, n))
  83.         self.newinputlist = {}
  84.         self.inputs['modInput'].setText("1")
  85.         if not self.inputs['modInput'].text():
  86.             self.inputs['dieDisplay'].setText(self.dieResult)
  87.             self.inputs['modDisplay'].setText("")
  88.         else:
  89.             try:
  90.                 for keys, vals in self.additionalInputs.items():
  91.                     self.newinputlist[keys] = self.additionalInputs[keys].text()
  92.                     print(self.newinputlist[keys])
  93.                     self.modDieResult = str(int(self.dieResult) + int(self.inputs['modInput'].text()) + int(self.newinputlist[keys]))
  94.                 self.inputs['dieDisplay'].setText(self.dieResult)
  95.                 self.inputs['modDisplay'].setText(self.modDieResult)
  96.             except ValueError:
  97.                 self.inputs['dieDisplay'].setText(self.dieResult)
  98.                 self.inputs['modInput'].setText("")
  99.                 self.inputs['modDisplay'].setText("")
  100.  
  101.  
  102. if __name__ == "__main__":
  103.     app = QApplication()
  104.     w = MainWidget()
  105.     w.show()
  106.     app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement