本文整理汇总了Python中qtpy.QtWidgets.QComboBox.currentData方法的典型用法代码示例。如果您正苦于以下问题:Python QComboBox.currentData方法的具体用法?Python QComboBox.currentData怎么用?Python QComboBox.currentData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qtpy.QtWidgets.QComboBox
的用法示例。
在下文中一共展示了QComboBox.currentData方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ConvertFluxUnitGUI
# 需要导入模块: from qtpy.QtWidgets import QComboBox [as 别名]
# 或者: from qtpy.QtWidgets.QComboBox import currentData [as 别名]
class ConvertFluxUnitGUI(QDialog):
"""
GUI for unit conversions
"""
def __init__(self, controller, parent=None, convert_data=False):
super(ConvertFluxUnitGUI, self).__init__(parent=parent)
self.setWindowFlags(self.windowFlags() | Qt.Tool)
self.title = "Unit Conversion"
self.setMinimumSize(400, 270)
self.convert_data = convert_data
self.cubeviz_layout = controller.cubeviz_layout
self._hub = self.cubeviz_layout.session.hub
self.controller = controller
self.data = controller.data
self.controller_components = controller._components
self.current_unit = None
self.current_layout = None
self._init_ui()
def _init_ui(self):
# LINE 1: Data component drop down
self.component_prompt = QLabel("Data Component:")
self.component_prompt.setWordWrap(True)
# Add the data component labels to the drop down, with the ComponentID
# set as the userData:
if self.parent is not None and hasattr(self.parent, 'data_components'):
self.label_data = [(str(cid), cid) for cid in self.parent.data_components]
else:
self.label_data = [(str(cid), cid) for cid in self.data.visible_components]
default_index = 0
self.component_combo = QComboBox()
self.component_combo.setFixedWidth(200)
update_combobox(self.component_combo, self.label_data, default_index=default_index)
self.component_combo.currentIndexChanged.connect(self.update_unit_layout)
# hbl is short for Horizontal Box Layout
hbl1 = QHBoxLayout()
hbl1.addWidget(self.component_prompt)
hbl1.addWidget(self.component_combo)
hbl1.addStretch(1)
# LINE 2: Unit conversion layout
# This layout is filled by CubeVizUnit
self.unit_layout = QHBoxLayout() # this is hbl2
# LINE 3: Message box
self.message_box = QLabel("")
hbl3 = QHBoxLayout()
hbl3.addWidget(self.message_box)
hbl3.addStretch(1)
# Line 4: Buttons
ok_text = "Convert Data" if self.convert_data else "Convert Displayed Units"
ok_function = self.convert_data_units if self.convert_data else self.convert_displayed_units
self.okButton = QPushButton(ok_text)
self.okButton.clicked.connect(ok_function)
self.okButton.setDefault(True)
self.cancelButton = QPushButton("Cancel")
self.cancelButton.clicked.connect(self.cancel)
hbl4 = QHBoxLayout()
hbl4.addStretch(1)
hbl4.addWidget(self.cancelButton)
hbl4.addWidget(self.okButton)
vbl = QVBoxLayout()
vbl.addLayout(hbl1)
vbl.addLayout(self.unit_layout)
vbl.addLayout(hbl3)
vbl.addLayout(hbl4)
self.setLayout(vbl)
self.vbl = vbl
self.update_unit_layout(default_index)
self.show()
def update_unit_layout(self, index):
"""
Call back for component selection drop down.
"""
component_id = self.component_combo.currentData()
# STEP1: Clean up widgets from last component
widgets = (self.unit_layout.itemAt(i) for i in range(self.unit_layout.count()))
for w in widgets:
if isinstance(w, QSpacerItem):
self.unit_layout.removeItem(w)
continue
elif isinstance(w, QWidgetItem):
w = w.widget()
if hasattr(w, "deleteLater"):
#.........这里部分代码省略.........
示例2: SlitSelectionUI
# 需要导入模块: from qtpy.QtWidgets import QComboBox [as 别名]
# 或者: from qtpy.QtWidgets.QComboBox import currentData [as 别名]
class SlitSelectionUI(QDialog):
"""
Custom slit selection UI and editor.
Right now it only applies slits temporarly,
ie. if the current target is changed, slit settings
will be lost.
"""
def __init__(self, mosviz_viewer, parent=None):
super(SlitSelectionUI, self).__init__(parent=parent)
self.mosviz_viewer = mosviz_viewer
self._slit_dict = {}
self._mosviz_table_option_text = 'Slit from MOSViz Table'
self._init_ui()
def _init_ui(self):
self.slit_type_label = QLabel('Slit Type')
self.slit_type_combo = QComboBox()
self.slit_type_combo.currentIndexChanged.connect(self.update_info)
hbl1 = QHBoxLayout()
hbl1.addWidget(self.slit_type_label)
hbl1.addWidget(self.slit_type_combo)
self.slit_width_label = QLabel('Slit Width')
self.slit_width_input = QLineEdit()
self.slit_width_combo = QComboBox()
self.slit_width_units = QLabel('arcsec')
hbl2 = QHBoxLayout()
hbl2.addWidget(self.slit_width_label)
hbl2.addWidget(self.slit_width_input)
hbl2.addWidget(self.slit_width_combo)
hbl2.addWidget(self.slit_width_units)
self.slit_length_label = QLabel('Slit Length')
self.slit_length_input = QLineEdit()
self.slit_length_combo = QComboBox()
self.slit_length_units = QLabel('arcsec')
hbl3 = QHBoxLayout()
hbl3.addWidget(self.slit_length_label)
hbl3.addWidget(self.slit_length_input)
hbl3.addWidget(self.slit_length_combo)
hbl3.addWidget(self.slit_length_units)
self.okButton = QPushButton('Apply')
self.okButton.clicked.connect(self.apply)
self.okButton.setDefault(True)
self.cancelButton = QPushButton('Cancel')
self.cancelButton.clicked.connect(self.cancel)
hbl4 = QHBoxLayout()
hbl4.addWidget(self.cancelButton)
hbl4.addWidget(self.okButton)
vbl = QVBoxLayout()
vbl.addLayout(hbl1)
vbl.addLayout(hbl2)
vbl.addLayout(hbl3)
vbl.addLayout(hbl4)
self.setLayout(vbl)
self.vbl = vbl
self._load_selections()
self._populate_combo()
self.update_info(0)
self.show()
def _load_selections(self):
"""Load preconfigured slit shapes from yaml file"""
file_path = os.path.join(os.path.dirname(__file__), 'saved_slits.yaml')
with open(file_path) as f:
self.slit_dict = yaml.load(f)
def _populate_combo(self, default_index=0):
"""Populate combo box with slit types"""
name_list = [self._mosviz_table_option_text] + \
[self.slit_dict[s]['name'] for s in sorted(self.slit_dict)] + \
['Custom']
key_list = ['default'] + [s for s in sorted(self.slit_dict)] + ['custom']
combo_input = [(name, key) for name, key in zip(name_list, key_list)]
update_combobox(self.slit_type_combo, combo_input, default_index=default_index)
@property
def width(self):
if self.slit_width_combo.isVisible():
width = self.slit_width_combo.currentData()
else:
width = self.slit_width_input.text()
return u.Quantity(width)
@property
def length(self):
#.........这里部分代码省略.........
示例3: SerialDialog
# 需要导入模块: from qtpy.QtWidgets import QComboBox [as 别名]
# 或者: from qtpy.QtWidgets.QComboBox import currentData [as 别名]
class SerialDialog(QDialog):
def __init__(self, settings, parent=None):
super().__init__(parent)
self.settings = settings
self.serialports = []
# port
self.portLabel = QLabel(self.tr("COM Port:"))
self.portComboBox = QComboBox()
self.portLabel.setBuddy(self.portComboBox)
self.refresh_comports(self.portComboBox)
# baudrate
self.baudrateLabel = QLabel(self.tr("Baudrate:"))
self.baudrateComboBox = QComboBox()
self.baudrateLabel.setBuddy(self.baudrateComboBox)
for br in BAUDRATES:
self.baudrateComboBox.addItem(str(br), br)
# buttons
self.dlgbuttons = QDialogButtonBox(
QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal)
self.dlgbuttons.rejected.connect(self.reject)
self.dlgbuttons.accepted.connect(self.accept)
# layout
layout = QGridLayout()
layout.addWidget(self.portLabel, 0, 0)
layout.addWidget(self.portComboBox, 0, 1)
layout.addWidget(self.baudrateLabel, 1, 0)
layout.addWidget(self.baudrateComboBox, 1, 1)
layout.addWidget(self.dlgbuttons, 2, 0, 1, 2)
self.setLayout(layout)
self.setWindowTitle(self.tr("Serial Settings"))
# settings
defaults = {
PORT_SETTING: "",
BAUDRATE_SETTING: "115200"
}
self.tmp_settings = ConfigManager()
self.tmp_settings.set_defaults(defaults)
self.tmp_settings.set_many(
{key: self.settings.get(key) for key in defaults.keys()}
)
self.tmp_settings.add_handler(PORT_SETTING, self.portComboBox)
self.tmp_settings.add_handler(BAUDRATE_SETTING, self.baudrateComboBox)
def accept(self):
d = self.tmp_settings.as_dict()
self.settings.set_many(d)
super().accept()
def refresh_comports(self, combobox):
self.serialports = serial_ports()
for port in self.serialports:
combobox.addItem(port)
@property
def port(self):
return self.portComboBox.currentText()
@port.setter
def port(self, value):
if value in self.serialports:
self.portComboBox.setCurrentIndex(
self.portComboBox.findText(value))
else:
raise ValueError("serial port '%s' not available" % value)
@property
def baudrate(self):
return self.baudrateComboBox.currentData()
示例4: SelectSmoothing
# 需要导入模块: from qtpy.QtWidgets import QComboBox [as 别名]
# 或者: from qtpy.QtWidgets.QComboBox import currentData [as 别名]
#.........这里部分代码省略.........
try:
self.main()
except Exception as e:
info = QMessageBox.critical(self, "Error", str(e))
self.cancel()
raise
def main(self):
"""
Main function to process input and call smoothing function
"""
success = self.input_validation()
if not success:
return
self.hide()
self.abort_window = AbortWindow(self)
QApplication.processEvents()
# Add smoothing parameters
self.smooth_cube.abort_window = self.abort_window
if self.smooth_cube.parent is None and self.parent is not self.smooth_cube:
self.smooth_cube.parent = self.parent
if self.parent is not self.smooth_cube:
self.smooth_cube.data = self.data
self.smooth_cube.smoothing_axis = self.current_axis
self.smooth_cube.kernel_type = self.current_kernel_type
if self.current_kernel_type == "median":
self.smooth_cube.kernel_size = int(self.k_size.text())
else:
self.smooth_cube.kernel_size = float(self.k_size.text())
self.smooth_cube.component_id = str(self.component_combo.currentText())
self.smooth_cube.output_as_component = True
if self.is_preview_active:
self.parent.end_smoothing_preview()
self.is_preview_active = False
self.smooth_cube.multi_threading_smooth()
return
def update_preview_button(self):
if self.parent is None or "spatial" != self.current_axis:
self.previewButton.setDisabled(True)
return
self.previewButton.setDisabled(False)
return
def call_preview(self):
try:
self.preview()
except Exception as e:
info = QMessageBox.critical(self, "Error", str(e))
self.cancel()
raise
def preview(self):
"""Preview current options"""
success = self.input_validation()
if not success:
return
if self.smooth_cube.parent is None and self.parent is not self.smooth_cube:
self.smooth_cube.parent = self.parent
self.smooth_cube.smoothing_axis = self.current_axis
self.smooth_cube.kernel_type = self.current_kernel_type
if self.current_kernel_type == "median":
self.smooth_cube.kernel_size = int(self.k_size.text())
else:
self.smooth_cube.kernel_size = float(self.k_size.text())
preview_function = self.smooth_cube.preview_smoothing
preview_title = self.smooth_cube.get_preview_title()
component_id = self.component_combo.currentData()
self.parent.start_smoothing_preview(preview_function, component_id, preview_title)
self.is_preview_active = True
self.preview_message.show()
def cancel(self):
self.clean_up()
def clean_up(self):
self.close()
if self.abort_window is not None:
self.abort_window.close()
if self.is_preview_active:
self.parent.end_smoothing_preview()
self.is_preview_active = False
def closeEvent(self, event):
if self.is_preview_active:
self.parent.end_smoothing_preview()
self.is_preview_active = False
def keyPressEvent(self, e):
if e.key() == Qt.Key_Escape:
self.clean_up()