本文整理汇总了Python中qtpy.QtWidgets.QTableView.horizontalHeader方法的典型用法代码示例。如果您正苦于以下问题:Python QTableView.horizontalHeader方法的具体用法?Python QTableView.horizontalHeader怎么用?Python QTableView.horizontalHeader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qtpy.QtWidgets.QTableView
的用法示例。
在下文中一共展示了QTableView.horizontalHeader方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
def __init__(self, plotted_lines, *args, **kwargs):
super().__init__(None, *args, **kwargs)
self.plotted_lines = plotted_lines
layout = QVBoxLayout()
layout.setSizeConstraint(QLayout.SetMaximumSize)
self.setLayout(layout)
table_model = LineListTableModel(plotted_lines)
if table_model.rowCount() > 0:
table_view = QTableView()
# disabling sorting will significantly speed up theWidget
# plot. This is because the table view must be re-built
# every time a new set of markers is drawn on the plot
# surface. Alternate approaches are worth examining. It
# remains to be seen what would be the approach users
# will favor.
table_view.setSortingEnabled(False)
proxy = SortModel(table_model.get_name())
proxy.setSourceModel(table_model)
table_view.setModel(proxy)
table_view.setSortingEnabled(True)
table_view.setSelectionMode(QAbstractItemView.NoSelection)
table_view.horizontalHeader().setStretchLastSection(True)
table_view.resizeColumnsToContents()
layout.addWidget(table_view)
示例2: _DatumTableWidget
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
class _DatumTableWidget(_DatumWidget):
def __init__(self, clasz, controller, datum=None, parent=None):
_DatumWidget.__init__(self, clasz, controller, datum, parent)
def _init_ui(self):
# Widgets
self._table = QTableView()
header = self._table.horizontalHeader()
mode = QHeaderView.Stretch
if os.environ[qtpy.QT_API] in qtpy.PYQT5_API:
header.setSectionResizeMode(mode)
else:
header.setResizeMode(mode)
# Layouts
layout = _DatumWidget._init_ui(self)
layout.addWidget(self._table)
return layout
def _create_model(self, datum):
raise NotImplementedError
def setDatum(self, datum):
_DatumWidget.setDatum(self, datum)
if datum is not None:
model = self._create_model(datum)
else:
model = None
self._table.setModel(model)
示例3: create_controls
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
def create_controls(self):
table = QTableView(self)
self.model = PluginsModel(self.plugin_manager)
table.setModel(self.model)
h = table.horizontalHeader()
h.setSectionResizeMode(QHeaderView.ResizeToContents)
table.setHorizontalHeader(h)
h = table.verticalHeader()
h.setSectionResizeMode(QHeaderView.ResizeToContents)
table.setVerticalHeader(h)
self.table = table
width = 80
for i in range(3):
width += table.columnWidth(i)
btns = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
Qt.Horizontal)
self.edit_btn = QPushButton("Edit")
btns.addButton(self.edit_btn, QDialogButtonBox.ActionRole)
self.edit_btn.clicked.connect(self.edit_plugin)
btns.accepted.connect(self.accept)
btns.rejected.connect(self.reject)
vbox = QVBoxLayout()
vbox.addWidget(table)
vbox.addWidget(btns)
self.setLayout(vbox)
s = self.size()
s.setHeight(table.rowHeight(0) * 10)
s.setWidth(width)
self.resize(s)
示例4: _create_line_list_pane
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
def _create_line_list_pane(linelist, table_model, caller):
table_view = QTableView()
# disabling sorting will significantly speed up the rendering,
# in particular of large line lists. These lists are often jumbled
# in wavelength, and consequently difficult to read and use, so
# having a sorting option is useful indeed. It remains to be seen
# what would be the approach users will favor. We might add a toggle
# that users can set/reset depending on their preferences.
table_view.setSortingEnabled(False)
sort_proxy = SortModel(table_model.get_name())
sort_proxy.setSourceModel(table_model)
table_view.setModel(sort_proxy)
table_view.setSortingEnabled(True)
table_view.horizontalHeader().setStretchLastSection(True)
# playing with these doesn't speed up the sorting, regardless of whatever
# you may read on the net.
#
# table_view.horizontalHeader().setResizeMode(QHeaderView.Fixed)
# table_view.verticalHeader().setResizeMode(QHeaderView.Fixed)
# table_view.horizontalHeader().setStretchLastSection(False)
# table_view.verticalHeader().setStretchLastSection(False)
table_view.setSelectionMode(QAbstractItemView.ExtendedSelection)
table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
table_view.resizeColumnsToContents()
# this preserves the original sorting state of the list. Use zero
# to sort by wavelength on load. Doesn't seem to affect performance
# by much tough.
sort_proxy.sort(-1, Qt.AscendingOrder)
# table selections will change the total count of lines selected.
pane = LineListPane(table_view, linelist, sort_proxy, caller)
return pane, table_view
示例5: SpecimenPositionListWidget
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
#.........这里部分代码省略.........
column = index.column()
if column == 0:
editor.setText(text)
elif column == 1:
editor.setText(text)
elif column == 2:
editor.setText(text)
elif column == 3:
editor.setText(text)
elif column == 4:
editor.setText(text)
else:
QItemDelegate.setEditorData(self, editor, index)
def setModelData(self, editor, model, index):
column = index.column()
if column == 0:
model.setData(index, editor.text())
elif column == 1:
model.setData(index, editor.text())
elif column == 2:
model.setData(index, editor.text())
elif column == 3:
model.setData(index, editor.text())
elif column == 4:
model.setData(index, editor.text())
else:
return QItemDelegate.setModelData(self, editor, model, index)
def __init__(self, parent=None):
ParameterWidget.__init__(self, object, parent)
def _init_ui(self):
# Widgets
self._table = QTableView()
self._table.setModel(self._SpecimenPositionModel())
self._table.setItemDelegate(self._SpecimenPositionDelegate(self))
self._table.horizontalHeader().setStretchLastSection(True)
self._toolbar = QToolBar()
action_add = self._toolbar.addAction(getIcon("list-add"), "Add layer")
action_remove = self._toolbar.addAction(getIcon("list-remove"), "Remove layer")
# Layouts
layout = ParameterWidget._init_ui(self)
layout.addRow(self._table)
layout.addRow(self._toolbar)
# Signals
action_add.triggered.connect(self._on_add)
action_remove.triggered.connect(self._on_remove)
return layout
def _on_add(self):
index = self._table.selectionModel().currentIndex()
model = self._table.model()
model.insertRows(index.row() + 1)
def _on_remove(self):
selection = self._table.selectionModel().selection().indexes()
if len(selection) == 0:
QMessageBox.warning(self, "Specimen position", "Select a position")
return
model = self._table.model()
for row in sorted(map(methodcaller('row'), selection), reverse=True):
model.removeRow(row)
def parameter(self):
positions = []
for position in self._table.model().positions:
positions.append(SpecimenPosition(position.x, position.y, position.z,
position.r, position.t))
return positions
def setParameter(self, positions):
model = self._table.model()
model.positions = positions
model.reset()
def positions(self):
return self.parameter()
def setPositions(self, positions):
self.setParameter(positions)
def setReadOnly(self, state):
ParameterWidget.setReadOnly(self, state)
if state:
trigger = QTableView.EditTrigger.NoEditTriggers
else:
trigger = QTableView.EditTrigger.AllEditTriggers
self._table.setEditTriggers(trigger)
self._toolbar.setEnabled(not state)
def isReadOnly(self):
return ParameterWidget.isReadOnly(self) and \
self._table.editTriggers() == QTableView.EditTrigger.NoEditTriggers and \
not self._toolbar.isEnabled()
示例6: BasePlotCurveEditorDialog
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
class BasePlotCurveEditorDialog(QDialog):
"""QDialog that is used in Qt Designer to edit the properties of the
curves in a waveform plot. This dialog is shown when you double-click
the plot, or when you right click it and choose 'edit curves'.
This thing is mostly just a wrapper for a table view, with a couple
buttons to add and remove curves, and a button to save the changes."""
TABLE_MODEL_CLASS = BasePlotCurvesModel
def __init__(self, plot, parent=None):
super(BasePlotCurveEditorDialog, self).__init__(parent)
self.plot = plot
self.setup_ui()
self.table_model = self.TABLE_MODEL_CLASS(self.plot)
self.table_view.setModel(self.table_model)
self.table_model.plot = plot
# self.table_view.resizeColumnsToContents()
self.add_button.clicked.connect(self.addCurve)
self.remove_button.clicked.connect(self.removeSelectedCurve)
self.remove_button.setEnabled(False)
self.table_view.selectionModel().selectionChanged.connect(
self.handleSelectionChange)
self.table_view.doubleClicked.connect(self.handleDoubleClick)
self.resize(800, 300)
def setup_ui(self):
self.vertical_layout = QVBoxLayout(self)
self.table_view = QTableView(self)
self.table_view.setEditTriggers(QAbstractItemView.DoubleClicked)
self.table_view.setProperty("showDropIndicator", False)
self.table_view.setDragDropOverwriteMode(False)
self.table_view.setSelectionMode(QAbstractItemView.SingleSelection)
self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table_view.setSortingEnabled(False)
self.table_view.horizontalHeader().setStretchLastSection(True)
self.table_view.verticalHeader().setVisible(False)
self.table_view.setColumnWidth(0, 160)
self.table_view.setColumnWidth(1, 160)
self.table_view.setColumnWidth(2, 160)
self.vertical_layout.addWidget(self.table_view)
self.add_remove_layout = QHBoxLayout()
spacer = QSpacerItem(40, 20, QSizePolicy.Expanding,
QSizePolicy.Minimum)
self.add_remove_layout.addItem(spacer)
self.add_button = QPushButton("Add Curve", self)
self.add_remove_layout.addWidget(self.add_button)
self.remove_button = QPushButton("Remove Curve", self)
self.add_remove_layout.addWidget(self.remove_button)
self.vertical_layout.addLayout(self.add_remove_layout)
self.button_box = QDialogButtonBox(self)
self.button_box.setOrientation(Qt.Horizontal)
self.button_box.addButton("Done", QDialogButtonBox.AcceptRole)
self.vertical_layout.addWidget(self.button_box)
self.button_box.accepted.connect(self.saveChanges)
self.button_box.rejected.connect(self.reject)
self.setWindowTitle("Waveform Curve Editor")
def setup_delegate_columns(self, index=2):
symbol_delegate = SymbolColumnDelegate(self)
self.table_view.setItemDelegateForColumn(index+3, symbol_delegate)
line_delegate = LineColumnDelegate(self)
self.table_view.setItemDelegateForColumn(index+1, line_delegate)
color_delegate = ColorColumnDelegate(self)
self.table_view.setItemDelegateForColumn(index, color_delegate)
@Slot()
def addCurve(self):
self.table_model.append()
@Slot()
def removeSelectedCurve(self):
self.table_model.removeAtIndex(self.table_view.currentIndex())
@Slot(QItemSelection, QItemSelection)
def handleSelectionChange(self, selected, deselected):
self.remove_button.setEnabled(
self.table_view.selectionModel().hasSelection())
@Slot(QModelIndex)
def handleDoubleClick(self, index):
if self.table_model.needsColorDialog(index):
# The table model returns a QBrush for BackgroundRole, not a QColor
init_color = self.table_model.data(index,
Qt.BackgroundRole).color()
color = QColorDialog.getColor(init_color, self)
if color.isValid():
self.table_model.setData(index, color, role=Qt.EditRole)
@Slot()
def saveChanges(self):
formWindow = QDesignerFormWindowInterface.findFormWindow(self.plot)
if formWindow:
formWindow.cursor().setProperty("curves", self.plot.curves)
self.accept()
示例7: SampleLogsView
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
class SampleLogsView(QSplitter):
"""Sample Logs View
This contains a table of the logs, a plot of the currently
selected logs, and the statistics of the selected log.
"""
def __init__(self, presenter, parent = None, name = '', isMD=False, noExp = 0):
super(SampleLogsView, self).__init__(parent)
self.presenter = presenter
self.setWindowTitle("{} sample logs".format(name))
self.setWindowFlags(Qt.Window)
# Create sample log table
self.table = QTableView()
self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table.clicked.connect(self.presenter.clicked)
self.table.doubleClicked.connect(self.presenter.doubleClicked)
self.table.contextMenuEvent = self.tableMenu
self.addWidget(self.table)
frame_right = QFrame()
layout_right = QVBoxLayout()
#Add full_time and experimentinfo options
layout_options = QHBoxLayout()
if isMD:
layout_options.addWidget(QLabel("Experiment Info #"))
self.experimentInfo = QSpinBox()
self.experimentInfo.setMaximum(noExp-1)
self.experimentInfo.valueChanged.connect(self.presenter.changeExpInfo)
layout_options.addWidget(self.experimentInfo)
self.full_time = QCheckBox("Relative Time")
self.full_time.setChecked(True)
self.full_time.stateChanged.connect(self.presenter.plot_logs)
layout_options.addWidget(self.full_time)
layout_right.addLayout(layout_options)
# Sample log plot
self.fig = Figure()
self.canvas = FigureCanvas(self.fig)
self.canvas.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Expanding)
self.canvas.mpl_connect('button_press_event', self.presenter.plot_clicked)
self.ax = self.fig.add_subplot(111, projection='mantid')
layout_right.addWidget(self.canvas)
# Sample stats
self.create_stats_widgets()
layout_stats = QFormLayout()
layout_stats.addRow('', QLabel("Log Statistics"))
layout_stats.addRow('Min:', self.stats_widgets["minimum"])
layout_stats.addRow('Max:', self.stats_widgets["maximum"])
layout_stats.addRow('Mean:', self.stats_widgets["mean"])
layout_stats.addRow('Median:', self.stats_widgets["median"])
layout_stats.addRow('Std Dev:', self.stats_widgets["standard_deviation"])
layout_stats.addRow('Time Avg:', self.stats_widgets["time_mean"])
layout_stats.addRow('Time Std Dev:', self.stats_widgets["time_standard_deviation"])
layout_stats.addRow('Duration:', self.stats_widgets["duration"])
layout_right.addLayout(layout_stats)
frame_right.setLayout(layout_right)
self.addWidget(frame_right)
self.setStretchFactor(0,1)
self.resize(1200,800)
self.show()
def tableMenu(self, event):
"""Right click menu for table, can plot or print selected logs"""
menu = QMenu(self)
plotAction = menu.addAction("Plot selected")
plotAction.triggered.connect(self.presenter.new_plot_logs)
plotAction = menu.addAction("Print selected")
plotAction.triggered.connect(self.presenter.print_selected_logs)
menu.exec_(event.globalPos())
def set_model(self, model):
"""Set the model onto the table"""
self.model = model
self.table.setModel(self.model)
self.table.resizeColumnsToContents()
self.table.horizontalHeader().setSectionResizeMode(2, QHeaderView.Stretch)
def plot_selected_logs(self, ws, exp, rows):
"""Update the plot with the selected rows"""
self.ax.clear()
self.create_ax_by_rows(self.ax, ws, exp, rows)
self.fig.canvas.draw()
def new_plot_selected_logs(self, ws, exp, rows):
"""Create a new plot, in a separate window for selected rows"""
fig, ax = plt.subplots(subplot_kw={'projection': 'mantid'})
self.create_ax_by_rows(ax, ws, exp, rows)
fig.show()
def create_ax_by_rows(self, ax, ws, exp, rows):
"""Creates the plots for given rows onto axis ax"""
#.........这里部分代码省略.........
示例8: __init__
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
def __init__(self, parent, env, name, action, version, versions):
super(CondaPackageActionDialog, self).__init__(parent)
self._parent = parent
self._env = env
self._version_text = None
self._name = name
self._dependencies_dic = {}
self._conda_process = \
conda_api_q.CondaProcess(self, self._on_process_finished)
# widgets
self.label = QLabel(self)
self.combobox_version = QComboBox()
self.label_version = QLabel(self)
self.widget_version = None
self.table_dependencies = None
self.checkbox = QCheckBox(_('Install dependencies (recommended)'))
self.bbox = QDialogButtonBox(QDialogButtonBox.Ok |
QDialogButtonBox.Cancel, Qt.Horizontal,
self)
self.button_ok = self.bbox.button(QDialogButtonBox.Ok)
self.button_cancel = self.bbox.button(QDialogButtonBox.Cancel)
self.button_cancel.setDefault(True)
self.button_cancel.setAutoDefault(True)
dialog_size = QSize(300, 90)
# helper variable values
action_title = {const.UPGRADE: _("Upgrade package"),
const.DOWNGRADE: _("Downgrade package"),
const.REMOVE: _("Remove package"),
const.INSTALL: _("Install package")}
# Versions might have duplicates from different builds
versions = sort_versions(list(set(versions)), reverse=True)
# FIXME: There is a bug, a package installed by anaconda has version
# astropy 0.4 and the linked list 0.4 but the available versions
# in the json file do not include 0.4 but 0.4rc1... so...
# temporal fix is to check if inside list otherwise show full list
if action == const.UPGRADE:
if version in versions:
index = versions.index(version)
versions = versions[:index]
else:
versions = versions
elif action == const.DOWNGRADE:
if version in versions:
index = versions.index(version)
versions = versions[index+1:]
else:
versions = versions
elif action == const.REMOVE:
versions = [version]
self.combobox_version.setEnabled(False)
if len(versions) == 1:
if action == const.REMOVE:
labeltext = _('Package version to remove:')
else:
labeltext = _('Package version available:')
self.label_version.setText(versions[0])
self.widget_version = self.label_version
else:
labeltext = _("Select package version:")
self.combobox_version.addItems(versions)
self.widget_version = self.combobox_version
self.label.setText(labeltext)
self.label_version.setAlignment(Qt.AlignLeft)
self.table_dependencies = QWidget(self)
self._layout = QGridLayout()
self._layout.addWidget(self.label, 0, 0, Qt.AlignVCenter |
Qt.AlignLeft)
self._layout.addWidget(self.widget_version, 0, 1, Qt.AlignVCenter |
Qt.AlignRight)
self.widgets = [self.checkbox, self.button_ok, self.widget_version,
self.table_dependencies]
row_index = 1
# Create a Table
if action in [const.INSTALL, const.UPGRADE, const.DOWNGRADE]:
table = QTableView(self)
dialog_size = QSize(dialog_size.width() + 40, 300)
self.table_dependencies = table
row_index = 1
self._layout.addItem(QSpacerItem(10, 5), row_index, 0)
self._layout.addWidget(self.checkbox, row_index + 1, 0, 1, 2)
self.checkbox.setChecked(True)
self._changed_version(versions[0])
table.setSelectionBehavior(QAbstractItemView.SelectRows)
table.verticalHeader().hide()
table.horizontalHeader().hide()
table.setAlternatingRowColors(True)
#.........这里部分代码省略.........
示例9: LayoutSettingsDialog
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
class LayoutSettingsDialog(QDialog):
"""Layout settings dialog"""
def __init__(self, parent, names, order, active):
super(LayoutSettingsDialog, self).__init__(parent)
# variables
self._parent = parent
self._selection_model = None
self.names = names
self.order = order
self.active = active
# widgets
self.button_move_up = QPushButton(_('Move Up'))
self.button_move_down = QPushButton(_('Move Down'))
self.button_delete = QPushButton(_('Delete Layout'))
self.button_box = QDialogButtonBox(QDialogButtonBox.Ok |
QDialogButtonBox.Cancel,
Qt.Horizontal, self)
self.group_box = QGroupBox(_("Layout Display and Order"))
self.table = QTableView(self)
self.ok_button = self.button_box.button(QDialogButtonBox.Ok)
self.cancel_button = self.button_box.button(QDialogButtonBox.Cancel)
self.cancel_button.setDefault(True)
self.cancel_button.setAutoDefault(True)
# widget setup
self.dialog_size = QSize(300, 200)
self.setMinimumSize(self.dialog_size)
self.setFixedSize(self.dialog_size)
self.setWindowTitle('Layout Settings')
self.table.setModel(LayoutModel(self.table, order, active))
self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table.setSelectionMode(QAbstractItemView.SingleSelection)
self.table.verticalHeader().hide()
self.table.horizontalHeader().hide()
self.table.setAlternatingRowColors(True)
self.table.setShowGrid(False)
self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.table.horizontalHeader().setStretchLastSection(True)
self.table.setColumnHidden(1, True)
# need to keep a reference for pyside not to segfault!
self._selection_model = self.table.selectionModel()
# layout
buttons_layout = QVBoxLayout()
buttons_layout.addWidget(self.button_move_up)
buttons_layout.addWidget(self.button_move_down)
buttons_layout.addStretch()
buttons_layout.addWidget(self.button_delete)
group_layout = QHBoxLayout()
group_layout.addWidget(self.table)
group_layout.addLayout(buttons_layout)
self.group_box.setLayout(group_layout)
layout = QVBoxLayout()
layout.addWidget(self.group_box)
layout.addWidget(self.button_box)
self.setLayout(layout)
# signals and slots
self.button_box.accepted.connect(self.accept)
self.button_box.rejected.connect(self.close)
self.button_delete.clicked.connect(self.delete_layout)
self.button_move_up.clicked.connect(lambda: self.move_layout(True))
self.button_move_down.clicked.connect(lambda: self.move_layout(False))
self.table.model().dataChanged.connect(
lambda: self.selection_changed(None, None))
self._selection_model.selectionChanged.connect(
lambda: self.selection_changed(None, None))
# focus table
index = self.table.model().index(0, 0)
self.table.setCurrentIndex(index)
self.table.setFocus()
def delete_layout(self):
""" """
names, order, active = self.names, self.order, self.order
name = from_qvariant(self.table.selectionModel().currentIndex().data(),
to_text_string)
if name in names:
index = names.index(name)
# In case nothing has focus in the table
if index != -1:
order.remove(name)
names[index] = None
if name in active:
active.remove(name)
self.names, self.order, self.active = names, order, active
self.table.model().set_data(order, active)
index = self.table.model().index(0, 0)
self.table.setCurrentIndex(index)
self.table.setFocus()
self.selection_changed(None, None)
#.........这里部分代码省略.........
示例10: CompositionElementalWidget
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
#.........这里部分代码省略.........
return editor
elif column == 1:
editor = QLineEdit(parent)
editor.setValidator(QDoubleValidator())
return editor
else:
return QItemDelegate.createEditor(self, parent, option, index)
def setEditorData(self, editor, index):
text = index.model().data(index, Qt.DisplayRole)
column = index.column()
if column == 0:
if text != 'none':
editor.setSelection(text)
elif column == 1:
editor.setText(text)
else:
QItemDelegate.setEditorData(self, editor, index)
def setModelData(self, editor, model, index):
column = index.column()
if column == 0:
model.setData(index, editor.selection())
elif column == 1:
model.setData(index, editor.text())
else:
return QItemDelegate.setModelData(self, editor, model, index)
def __init__(self, parent=None):
_CompositionWidget.__init__(self, CompositionElemental, parent)
def _init_ui(self):
# Widgets
model = self._CompositionModel()
self._table = QTableView()
self._table.setModel(model)
self._table.setItemDelegate(self._CompositionDelegate(self))
self._table.horizontalHeader().setStretchLastSection(True)
self._toolbar = QToolBar()
action_add = self._toolbar.addAction(getIcon("list-add"), "Add layer")
action_remove = self._toolbar.addAction(getIcon("list-remove"), "Remove layer")
# Layouts
layout = _CompositionWidget._init_ui(self)
layout.addRow(self._table)
layout.addRow(self._toolbar)
# Signals
action_add.triggered.connect(self._on_add)
action_remove.triggered.connect(self._on_remove)
model.dataChanged.connect(self.edited)
model.rowsInserted.connect(self.edited)
model.rowsRemoved.connect(self.edited)
return layout
def _on_add(self):
index = self._table.selectionModel().currentIndex()
model = self._table.model()
model.insertRows(index.row() + 1)
def _on_remove(self):
selection = self._table.selectionModel().selection().indexes()
if len(selection) == 0:
QMessageBox.warning(self, "Window layer", "Select a layer")
return
model = self._table.model()
for row in sorted(map(methodcaller('row'), selection), reverse=True):
model.removeRow(row)
def _create_parameter(self):
return self.CLASS('wt%')
def parameter(self, parameter=None):
parameter = _CompositionWidget.parameter(self, parameter)
parameter.update(self._table.model().composition)
return parameter
def setParameter(self, condition):
_CompositionWidget.setParameter(self, condition)
self._table.model().composition.update(condition)
self._table.model().reset()
def setReadOnly(self, state):
_CompositionWidget.setReadOnly(self, state)
if state:
trigger = QTableView.EditTrigger.NoEditTriggers
else:
trigger = QTableView.EditTrigger.AllEditTriggers
self._table.setEditTriggers(trigger)
self._toolbar.setEnabled(not state)
def isReadOnly(self):
return _CompositionWidget.isReadOnly(self) and \
self._table.editTriggers() == QTableView.EditTrigger.NoEditTriggers and \
not self._toolbar.isEnabled()
示例11: __init__
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
def __init__(self, parent, prefix, name, action, version, versions, packages_sizes, active_channels):
super(CondaPackageActionDialog, self).__init__(parent)
self._parent = parent
self._prefix = prefix
self._version_text = None
self._name = name
self._dependencies_dic = {}
self._active_channels = active_channels
self._packages_sizes = packages_sizes
self.api = ManagerAPI()
# Widgets
self.label = QLabel(self)
self.combobox_version = QComboBox()
self.label_version = QLabel(self)
self.widget_version = None
self.table_dependencies = None
self.checkbox = QCheckBox(_("Install dependencies (recommended)"))
self.bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self)
self.button_ok = self.bbox.button(QDialogButtonBox.Ok)
self.button_cancel = self.bbox.button(QDialogButtonBox.Cancel)
self.button_cancel.setDefault(True)
self.button_cancel.setAutoDefault(True)
dialog_size = QSize(300, 90)
# Helper variable values
action_title = {
C.ACTION_UPGRADE: _("Upgrade package"),
C.ACTION_DOWNGRADE: _("Downgrade package"),
C.ACTION_REMOVE: _("Remove package"),
C.ACTION_INSTALL: _("Install package"),
}
# FIXME: There is a bug, a package installed by anaconda has version
# astropy 0.4 and the linked list 0.4 but the available versions
# in the json file do not include 0.4 but 0.4rc1... so...
# temporal fix is to check if inside list otherwise show full list
if action == C.ACTION_UPGRADE:
if version in versions:
index = versions.index(version)
combo_versions = versions[index + 1 :]
else:
versions = versions
elif action == C.ACTION_DOWNGRADE:
if version in versions:
index = versions.index(version)
combo_versions = versions[:index]
else:
versions = versions
elif action == C.ACTION_REMOVE:
combo_versions = [version]
self.combobox_version.setEnabled(False)
elif action == C.ACTION_INSTALL:
combo_versions = versions
# Reverse order for combobox
combo_versions = list(reversed(combo_versions))
if len(versions) == 1:
if action == C.ACTION_REMOVE:
labeltext = _("Package version to remove:")
else:
labeltext = _("Package version available:")
self.label_version.setText(combo_versions[0])
self.widget_version = self.label_version
else:
labeltext = _("Select package version:")
self.combobox_version.addItems(combo_versions)
self.widget_version = self.combobox_version
self.label.setText(labeltext)
self.label_version.setAlignment(Qt.AlignLeft)
self.table_dependencies = QWidget(self)
layout = QVBoxLayout()
version_layout = QHBoxLayout()
version_layout.addWidget(self.label)
version_layout.addStretch()
version_layout.addWidget(self.widget_version)
layout.addLayout(version_layout)
self.widgets = [self.checkbox, self.button_ok, self.widget_version, self.table_dependencies]
# Create a Table
if action in [C.ACTION_INSTALL, C.ACTION_UPGRADE, C.ACTION_DOWNGRADE]:
table = QTableView(self)
dialog_size = QSize(dialog_size.width() + 40, 300)
self.table_dependencies = table
layout.addWidget(self.checkbox)
self.checkbox.setChecked(True)
self._changed_version(versions[0])
table.setSelectionBehavior(QAbstractItemView.SelectRows)
table.verticalHeader().hide()
table.horizontalHeader().hide()
table.setAlternatingRowColors(True)
#.........这里部分代码省略.........
示例12: WindowWidget
# 需要导入模块: from qtpy.QtWidgets import QTableView [as 别名]
# 或者: from qtpy.QtWidgets.QTableView import horizontalHeader [as 别名]
#.........这里部分代码省略.........
return NumericalAttributeLineEdit(WindowLayer.thickness, parent)
else:
return QItemDelegate.createEditor(self, parent, option, index)
def setEditorData(self, editor, index):
text = index.model().data(index, Qt.DisplayRole)
column = index.column()
if column == 0:
editor.setText(text)
elif column == 1:
editor.setText(text)
else:
QItemDelegate.setEditorData(self, editor, index)
def setModelData(self, editor, model, index):
column = index.column()
if column == 0:
model.setData(index, editor.text())
elif column == 1:
model.setData(index, editor.text())
else:
return QItemDelegate.setModelData(self, editor, model, index)
def __init__(self, parent=None):
ParameterWidget.__init__(self, Window, parent)
def _init_ui(self):
# Widgets
model = self._WindowModel()
self._table = QTableView()
self._table.setModel(model)
self._table.setItemDelegate(self._WindowDelegate(self))
self._table.horizontalHeader().setStretchLastSection(True)
self._toolbar = QToolBar()
action_add = self._toolbar.addAction(getIcon("list-add"), "Add layer")
action_remove = self._toolbar.addAction(getIcon("list-remove"), "Remove layer")
# Layouts
layout = ParameterWidget._init_ui(self)
layout.addRow(self._table)
layout.addRow(self._toolbar)
# Signals
action_add.triggered.connect(self._on_add)
action_remove.triggered.connect(self._on_remove)
model.dataChanged.connect(self.edited)
model.rowsInserted.connect(self.edited)
model.rowsRemoved.connect(self.edited)
return layout
def _on_add(self):
index = self._table.selectionModel().currentIndex()
model = self._table.model()
model.insertRows(index.row() + 1)
def _on_remove(self):
selection = self._table.selectionModel().selection().indexes()
if len(selection) == 0:
QMessageBox.warning(self, "Window layer", "Select a layer")
return
model = self._table.model()