Examples#
Example 01 - Custom Dialog#
The demo code generates a custom dialog using the Dialog
class and fills it with various widgets (Label
, Slider
, ComboBox
, HRadioButtons
, etc.). The spatial arrangement of the widgets is controlled via the VFrame
class. The code is organized into MyCustomGui()
function that also contains nested functions defining individual GUI functionalities.
1from hwx import gui
2from hwx.xmlui import gui as gui2
3
4import os
5
6def MyCustomGui():
7
8 # Set of functions used as commands linked to various widgets
9 def onClose(event):
10 dialog.Hide()
11
12 def onRun(event):
13 dialog.Hide()
14 gui.tellUser("Done!")
15
16 def onModified():
17 # Function to update the output label with the slider value when
18 # the slider is interactively used
19 output.value = str(f"Output Quality: {slider.value}")
20
21 def comboboxFunc(event):
22 # output.text = event.value
23 pass
24
25 # Creating objects for various UI widgets
26 label1 = gui.Label(text="Model File")
27 modelFile = gui2.OpenFileEntry(placeholdertext="Model File")
28 label2 = gui.Label(text="Result File")
29 resultFile = gui2.OpenFileEntry(placeholdertext="Result File")
30 label3 = gui.Label(text="Screenshot Folder")
31 folderSel = gui2.ChooseDirEntry(tooltip="Select output directory")
32 slider = gui.Slider(maxvalue=100, tracking=False, value=10, command=onModified)
33 output = gui.Label(f"Output Quality: {slider.value}")
34 formats = (("jpeg", "JPEG"), ("png", "PNG"))
35 buttons = gui.HRadioButtons(formats)
36 levels = (("lvl1", "Level 1"), ("lvl2", "Level 2"), ("lvl3", "Level 3"))
37 combobox = gui.ComboBox(levels, command=comboboxFunc)
38
39 # Defining the pair of custom buttons at the bottom of the dialog
40 close = gui.Button("Close", command=onClose)
41 create = gui.Button("Run", command=onRun)
42
43 # Creating a vertical frame to organize all the widgets.
44 # We are using integer values or <-> spacer to control the spacing between widgets.
45 mainFrame = gui.VFrame(
46 (label1, 10, modelFile),
47 (label2, 10, resultFile),
48 (label3, 10, folderSel),
49 (output, 10, slider),
50 (buttons, "<->"),
51 (combobox, "<->"),
52 (create, close),
53 )
54
55 # Creating a dialog instance that hosts and displays all the widgets constructed above
56 dialog = gui.Dialog(caption="Example Dialog", width=400, height=200)
57 dialog.addChildren(mainFrame)
58
59 # Displaying the dialog with prescribed dimensions
60 dialog.show()
61
62MyCustomGui()

Figure 1. Custom dialog containing various widgets