-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathremove_widgets_example.py
135 lines (106 loc) · 4.87 KB
/
remove_widgets_example.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import sys
from PySide2 import QtWidgets
from eqt.ui import FormDialog, UIFormWidget
class MainUI(QtWidgets.QMainWindow):
def __init__(self, parent=None):
QtWidgets.QMainWindow.__init__(self, parent)
# create a FormDockWidget
dock = UIFormWidget.FormDockWidget(parent=self, title='Example remove widget')
self.addWidgetsToExampleForm(dock)
# add a button to dock to remove user selected widget
buttonuser = QtWidgets.QPushButton(dock)
buttonuser.setText("Remove user selected widget")
dock.addSpanningWidget(buttonuser, 'Button Remove User')
buttonuser.clicked.connect(lambda: self.remove(dock, buttonuser))
# create button for Form Dialog
pb = QtWidgets.QPushButton(self)
pb.setText("Open Form Dialog")
pb.clicked.connect(lambda: self.openFormDialog())
# create window layout
layout = QtWidgets.QHBoxLayout()
layout.addWidget(pb)
layout.addWidget(dock)
widg = QtWidgets.QWidget()
widg.setLayout(layout)
self.setCentralWidget(widg)
# print dictionary of all widgets in dock
print("\nDictionary of widgets in the Form Dock Widget:\n" + str(dock.getWidgets()))
self.show()
def openFormDialog(self):
dialog = FormDialog(parent=self, title='Example remove widget')
dialog.Ok.clicked.connect(lambda: self.remove(dialog, dialog.Ok))
self.addWidgetsToExampleForm(dialog)
dialog.addSpanningWidget(
QtWidgets.QLabel(
"Press `Ok` to remove the user selected widget and `Cancel` to close the dialog:"),
'ok_cancel_instructions')
# store a reference
self.dialog = dialog
self.dialog.onCancel = self.rejected
# redefine `onOk`` so it does not close the dialog.
self.dialog._onOk = self._onOkRedefined
# print dictionary of all widgets in dialog
print("\nDictionary of widgets in Form Dialog:\n" + str(self.dialog.getWidgets()))
dialog.open()
def _onOkRedefined(self):
'''Saves the widget states.'''
self.dialog.saveAllWidgetStates()
def addWidgetsToExampleForm(self, form):
# add widget 1 as QLineEdit
qlabel = QtWidgets.QLabel(form)
qlabel.setText("Widget 1: ")
qwidget = QtWidgets.QLineEdit(form)
qwidget.setClearButtonEnabled(True)
form.addWidget(qwidget, qlabel, 'Widget 1')
# add widget 2 as QLineEdit
qlabel = QtWidgets.QLabel(form)
qlabel.setText("Widget 2: ")
qwidget = QtWidgets.QLineEdit(form)
qwidget.setClearButtonEnabled(True)
form.addWidget(qwidget, qlabel, 'Widget 2')
# add widget 3 as QLineEdit
qlabel = QtWidgets.QLabel(form)
qlabel.setText("Widget 3: ")
qwidget = QtWidgets.QLineEdit(form)
qwidget.setClearButtonEnabled(True)
form.addWidget(qwidget, qlabel, 'Widget 3')
# add input as QComboBox
form.addSpanningWidget(QtWidgets.QLabel("Pick the widget you want to remove:"),
'input_title')
qlabel = QtWidgets.QLabel(form)
qlabel.setText("User input: ")
qwidget = QtWidgets.QComboBox(form)
qwidget.addItem("Widget 2")
qwidget.addItem("Widget 3")
qwidget.setCurrentIndex(0)
qwidget.setEnabled(True)
form.addWidget(qwidget, qlabel, 'userinput')
# add a button to remove widget 1
button1 = QtWidgets.QPushButton(form)
button1.setText("Remove widget 1")
form.addSpanningWidget(button1, 'Button Remove w1')
button1.clicked.connect(lambda: self.remove(form, button1, 'Widget 1'))
# add a button to remove spanning widget
buttonspanning = QtWidgets.QPushButton(form)
buttonspanning.setText("Remove spanning widget")
form.addSpanningWidget(buttonspanning, 'Button Remove Spanning')
buttonspanning.clicked.connect(lambda: self.remove(form, buttonspanning, 'input_title'))
def rejected(self):
print("\nDialog closed.")
def remove(self, form, button, userselection=False):
if userselection is False:
userselection = form.getWidget('userinput').currentText()
form.getWidget('userinput').removeItem(form.getWidget('userinput').currentIndex())
print("\nRemove " + userselection)
form.removeWidget(userselection)
if form.getWidget('userinput').currentIndex() == -1:
button.setEnabled(False)
if button == form.getWidget('Button Remove w1') or button == form.getWidget(
'Button Remove Spanning'):
button.setEnabled(False)
print("\nDictionary of widgets after deletion of " + userselection + ":\n" +
str(form.getWidgets()))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainUI()
sys.exit(app.exec_())