Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.03 KB | None | 0 0
  1. import os, sys
  2. from functools import partial
  3. import time
  4. import hou
  5.  
  6. from hutil.Qt.QtCore import *
  7.  
  8. if False:
  9.         from PyQt5.QtCore import *
  10.  
  11. from hutil.Qt.QtGui import *
  12.  
  13. if False:
  14.         from PyQt5.QtGui import *
  15. from hutil.Qt.QtWidgets import *
  16.  
  17. if False:
  18.         from PyQt5.QtWidgets import *
  19.  
  20.  
  21. class MyDialog(QDialog):
  22.         def __init__(self, parent=None, f=0):
  23.                 super(MyDialog, self).__init__(parent, f)
  24.                 mainLayout = QVBoxLayout()
  25.                 self.setLayout(mainLayout)
  26.                 description = QLabel("This is coustom dialog.")
  27.                 mainLayout.addWidget(description)
  28.                 self.inputWidget = QLineEdit()
  29.                 mainLayout.addWidget(self.inputWidget)
  30.                 buttonArea = QHBoxLayout()
  31.                 mainLayout.addLayout(buttonArea)
  32.                 buttonArea.addStretch()
  33.                 okBtn = QPushButton("OK")
  34.                 buttonArea.addWidget(okBtn)
  35.                 okBtn.clicked.connect(self.accept)
  36.                 cancelBtn = QPushButton("Cancel")
  37.                 buttonArea.addWidget(cancelBtn)
  38.                 cancelBtn.clicked.connect(self.reject)
  39.  
  40.         def getInputText(self):
  41.                 return self.inputWidget.text()
  42.  
  43.  
  44. class GUI(QMainWindow):
  45.         def __init__(self):
  46.                 super(GUI, self).__init__()
  47.                 self.initUI()
  48.                 self.errorDialog = QErrorMessage(self)
  49.  
  50.         def initUI(self):
  51.                 self.setStyleSheet(hou.qt.styleSheet())
  52.                 self.setProperty("houdiniStyle", True)
  53.                 self.setWindowTitle("ALL Widget")
  54.                 self.resize(600, 600)
  55.                 wrapper = QWidget()
  56.                 self.setCentralWidget(wrapper)
  57.                 mainLayout = QVBoxLayout()
  58.                 wrapper.setLayout(mainLayout)
  59.                 # --- first row ---
  60.                 firstHolizontalArea = QHBoxLayout()
  61.                 firstHolizontalArea.setSpacing(20)
  62.                 mainLayout.addLayout(firstHolizontalArea)
  63.                 labelArea = QVBoxLayout()
  64.                 firstHolizontalArea.addLayout(labelArea)
  65.                 labelWidget = QLabel("This is text.")
  66.                 labelArea.addWidget(labelWidget)
  67.                 labelArea.addStretch()
  68.                 textArea = QTextEdit()
  69.                 textArea.setPlainText("You can use\nmultiple lines.")
  70.                 firstHolizontalArea.addWidget(textArea)
  71.                 mainLayout.addWidget(self.makeHorizontalLine())
  72.                 # --- second row ---
  73.                 secondHorizontalArea = QHBoxLayout()
  74.                 secondHorizontalArea.setSpacing(20)
  75.                 mainLayout.addLayout(secondHorizontalArea)
  76.                 lineEdit = QLineEdit()
  77.                 lineEdit.setMaximumWidth(200)
  78.                 lineEdit.setText("Useful for inputting text")
  79.                 secondHorizontalArea.addWidget(lineEdit)
  80.                 comboBox = QComboBox()
  81.                 comboBox.addItems(["AAAAA", "BBBBB", "CCCCC"])
  82.                 comboBox.setEditable(True)
  83.                 comboBox.setInsertPolicy(QComboBox.NoInsert)
  84.                 comboBox.completer().setCompletionMode(QCompleter.PopupCompletion)
  85.                 secondHorizontalArea.addWidget(comboBox)
  86.                 spinBox = QSpinBox()
  87.                 spinBox.setMinimum(0)
  88.                 spinBox.setMaximum(10)
  89.                 spinBox.setSuffix("min")
  90.                 secondHorizontalArea.addWidget(spinBox)
  91.                 mainLayout.addWidget(self.makeHorizontalLine())
  92.                 # --- third row ---
  93.                 thirdHorizontalArea = QHBoxLayout()
  94.                 thirdHorizontalArea.setSpacing(20)
  95.                 mainLayout.addLayout(thirdHorizontalArea)
  96.                 checkBox = QCheckBox("Check Box")
  97.                 thirdHorizontalArea.addWidget(checkBox)
  98.                 checkBox.setCheckable(True)
  99.                 radioArea = QVBoxLayout()
  100.                 thirdHorizontalArea.addLayout(radioArea)
  101.                 radioGroup = QButtonGroup(self)
  102.                 radioBtn1 = QRadioButton("Option 1")
  103.                 radioArea.addWidget(radioBtn1)
  104.                 radioGroup.addButton(radioBtn1)
  105.                 radioBtn2 = QRadioButton("Option 2")
  106.                 radioArea.addWidget(radioBtn2)
  107.                 radioGroup.addButton(radioBtn2)
  108.                 radioBtn3 = QRadioButton("Option 3")
  109.                 radioArea.addWidget(radioBtn3)
  110.                 radioGroup.addButton(radioBtn3)
  111.                 radioBtn1.setChecked(True)
  112.                 mainLayout.addWidget(self.makeHorizontalLine())
  113.                 # --- fourth row ---
  114.                 fourthHorizontalArea = QHBoxLayout()
  115.                 fourthHorizontalArea.setSpacing(20)
  116.                 mainLayout.addLayout(fourthHorizontalArea)
  117.                 calender = QCalendarWidget()
  118.                 fourthHorizontalArea.addWidget(calender)
  119.                 calender.setMaximumWidth(300)
  120.                 lcdNumber = QLCDNumber()
  121.                 fourthHorizontalArea.addWidget(lcdNumber)
  122.                 lcdNumber.display(1234)
  123.                 sliderArea = QVBoxLayout()
  124.                 fourthHorizontalArea.addLayout(sliderArea)
  125.                 sliderDisplay = QLabel("0")
  126.                 sliderArea.addWidget(sliderDisplay)
  127.                 slider = QSlider(Qt.Horizontal)
  128.                 sliderArea.addWidget(slider)
  129.                 slider.setRange(0, 100)
  130.                 slider.setTickPosition(QSlider.TicksBothSides)
  131.                 slider.setSingleStep(5)
  132.                 slider.setPageStep(10)
  133.                 slider.setTickInterval(10)
  134.                 slider.valueChanged.connect(lambda val: sliderDisplay.setText(str(val)))
  135.                 slider.setValue(0)
  136.                 dialDisplay = QLabel("0")
  137.                 sliderArea.addWidget(dialDisplay)
  138.                 dial = QDial()
  139.                 sliderArea.addWidget(dial)
  140.                 dial.setRange(0, 100)
  141.                 dial.setSingleStep(5)
  142.                 dial.setPageStep(10)
  143.                 dial.setNotchesVisible(True)
  144.                 dial.setWrapping(True)
  145.                 dial.setNotchTarget(5)
  146.                 dial.valueChanged.connect(lambda val: dialDisplay.setText(str(val)))
  147.                 dial.setValue(0)
  148.                 mainLayout.addWidget(self.makeHorizontalLine())
  149.                 # --- fifth row ---
  150.                 fifthHorizontalArea = QHBoxLayout()
  151.                 fifthHorizontalArea.setSpacing(20)
  152.                 mainLayout.addLayout(fifthHorizontalArea)
  153.                 fifthHorizontalArea.addWidget(self.makeListWidget())
  154.                 fifthHorizontalArea.addWidget(self.makeTabWidget())
  155.                 fifthHorizontalArea.addWidget(self.makeTreeWidget())
  156.                 mainLayout.addWidget(self.makeHorizontalLine())
  157.                 # --- sixth row ---
  158.                 sixthHorizontalArea = QHBoxLayout()
  159.                 sixthHorizontalArea.setSpacing(20)
  160.                 mainLayout.addLayout(sixthHorizontalArea)
  161.                 msgBoxBtn = QPushButton("Message Dialog")
  162.                 sixthHorizontalArea.addWidget(msgBoxBtn)
  163.                 msgBoxBtn.clicked.connect(
  164.                         partial(QMessageBox().information, self, "Message", "This is normal information message."))
  165.                 progressDialogBtn = QPushButton("Progress Dialog")
  166.                 sixthHorizontalArea.addWidget(progressDialogBtn)
  167.                 progressDialogBtn.clicked.connect(self.showProgressDialog)
  168.                 fileDialogBtn = QPushButton("File Dialog")
  169.                 sixthHorizontalArea.addWidget(fileDialogBtn)
  170.                 fileDialogBtn.clicked.connect(
  171.                         partial(QFileDialog.getOpenFileName, self, "File Select", options=QFileDialog.DontUseNativeDialog))
  172.                 # --- seventh row ---
  173.                 seventhHorizontalArea = QHBoxLayout()
  174.                 seventhHorizontalArea.setSpacing(20)
  175.                 mainLayout.addLayout(seventhHorizontalArea)
  176.                 errorMsgBtn = QPushButton("Error Dialog")
  177.                 seventhHorizontalArea.addWidget(errorMsgBtn)
  178.                 errorMsgBtn.clicked.connect(self.showErrorDialog)
  179.                 inputDialogTextBtn = QPushButton("Input (text)")
  180.                 seventhHorizontalArea.addWidget(inputDialogTextBtn)
  181.                 inputDialogTextBtn.clicked.connect(self.showInputTextDialog)
  182.                 inputDialogComboBtn = QPushButton("Input (combo)")
  183.                 seventhHorizontalArea.addWidget(inputDialogComboBtn)
  184.                 inputDialogComboBtn.clicked.connect(self.showInputComboDialog)
  185.                 dialogBtn = QPushButton("Custom Dialog")
  186.                 seventhHorizontalArea.addWidget(dialogBtn)
  187.                 dialogBtn.clicked.connect(self.showCustomDialog)
  188.                 # --- dock widget ---
  189.                 dockWidget = QDockWidget("Dock Window", self)
  190.                 dockWrapper = QWidget()
  191.                 dockWidget.setWidget(dockWrapper)
  192.                 dockWidget.setAllowedAreas(Qt.RightDockWidgetArea | Qt.BottomDockWidgetArea)
  193.                 dockLayout = QVBoxLayout()
  194.                 dockWrapper.setLayout(dockLayout)
  195.                 dockDescription = QLabel("This is dock widget contents.")
  196.                 dockLayout.addWidget(dockDescription)
  197.                 dockButton = QPushButton("OK")
  198.                 dockLayout.addWidget(dockButton)
  199.                 self.addDockWidget(Qt.BottomDockWidgetArea, dockWidget)
  200.  
  201.         def makeHorizontalLine(self):
  202.                 hline = QFrame()
  203.                 hline.setFrameShape(QFrame.HLine)
  204.                 hline.setFrameShadow(QFrame.Sunken)
  205.                 return hline
  206.  
  207.         def makeListWidget(self):
  208.                 listWidget = QListWidget()
  209.                 listWidget.setMaximumWidth(100)
  210.                 listWidget.addItems(["this", "is", "list", "widget"])
  211.                 return listWidget
  212.  
  213.         def makeTabWidget(self):
  214.                 tableWidget = QTableWidget()
  215.                 headerLabels = ["Name", "Age", "Sex"]
  216.                 tableWidget.setColumnCount(len(headerLabels))
  217.                 tableWidget.setHorizontalHeaderLabels(headerLabels)
  218.                 tableWidget.verticalHeader().setVisible(False)
  219.                 try:
  220.                         tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
  221.                 except:
  222.                         tableWidget.horizontalHeader().setResizeMode(QHeaderView.Interactive)
  223.                 tableWidget.setAlternatingRowColors(True)
  224.                 tableWidget.horizontalHeader().setStretchLastSection(True)
  225.                 dataList = [
  226.                         ["Sum", "25", "Male"],
  227.                         ["Bob", "26", "Male"],
  228.                         ["Erena", "22", "Female"]
  229.                 ]
  230.                 tableWidget.setRowCount(len(dataList))
  231.                 for row, colData in enumerate(dataList):
  232.                         for col, value in enumerate(colData):
  233.                                 item = QTableWidgetItem(value)
  234.                                 tableWidget.setItem(row, col, item)
  235.                 return tableWidget
  236.  
  237.         def makeTreeWidget(self):
  238.                 treeWidget = QTreeWidget()
  239.                 headerLabels = ["Name", "Age"]
  240.                 treeWidget.setColumnCount(len(headerLabels))
  241.                 treeWidget.setHeaderLabels(headerLabels)
  242.                 treeWidget.setAlternatingRowColors(True)
  243.                 treeData = {
  244.                         "Male": [
  245.                                 {"name": "Jon", "age": "20"},
  246.                                 {"name": "Ken", "age": "24"},
  247.                                 {"name": "Alex", "age": "26"}
  248.                         ],
  249.                         "Female": [
  250.                                 {"name": "Rucy", "age": "19"},
  251.                                 {"name": "Queen", "age": "22"}
  252.                         ]
  253.                 }
  254.                 for sex, profiles in treeData.iteritems():
  255.                         topItem = QTreeWidgetItem([sex])
  256.                         treeWidget.addTopLevelItem(topItem)
  257.                         for profile in profiles:
  258.                                 childItem = QTreeWidgetItem(topItem, [profile.get("name"), profile.get("age")])
  259.                 treeWidget.expandAll()
  260.                 return treeWidget
  261.  
  262.         def showProgressDialog(self):
  263.                 max = 100
  264.                 progressDialog = QProgressDialog("Progress...", "Cancel", 0, max, self)
  265.                 progressDialog.setWindowTitle("Progress Dialog")
  266.                 for count in range(max + 1):
  267.                         qApp.processEvents()
  268.                         if progressDialog.wasCanceled():
  269.                                 break
  270.                         progressDialog.setValue(count)
  271.                         progressDialog.setLabelText("Progress... %d %%" % count)
  272.                         time.sleep(0.1)
  273.  
  274.         def showErrorDialog(self):
  275.                 self.errorDialog.showMessage("This is error message.")
  276.  
  277.         def showInputTextDialog(self):
  278.                 response = QInputDialog.getText(self,
  279.                                                                                 "Input Text",
  280.                                                                                 "Input text here.")
  281.                 print(response)
  282.  
  283.         def showInputComboDialog(self):
  284.                 response = QInputDialog.getItem(self,
  285.                                                                                 "Select Item",
  286.                                                                                 "Select item from the combo box.",
  287.                                                                                 ["item1", "item2", "item3", "item4"],
  288.                                                                                 editable=False)
  289.                 print(response)
  290.  
  291.  
  292.         def showCustomDialog(self):
  293.                 dialog = MyDialog()
  294.                 response = dialog.exec_()
  295.                 if response == QDialog.Accepted:
  296.                         print(dialog.getInputText())
  297.  
  298.  
  299.  
  300. def main():
  301.         ui = GUI()
  302.         ui.show()
  303.  
  304.  
  305. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement