本文整理汇总了Python中qtpy.QtWidgets.QPushButton.setEnabled方法的典型用法代码示例。如果您正苦于以下问题:Python QPushButton.setEnabled方法的具体用法?Python QPushButton.setEnabled怎么用?Python QPushButton.setEnabled使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qtpy.QtWidgets.QPushButton
的用法示例。
在下文中一共展示了QPushButton.setEnabled方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PipOutput
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class PipOutput(QDialog):
def __init__(self, parent=None):
super(PipOutput, self).__init__(parent)
self.create_controls()
def sizeHint(self):
def_sz = super(PipOutput, self).sizeHint()
def_sz.setWidth(500)
return def_sz
def create_controls(self):
self.setWindowTitle(tr("Updating via pip"))
wFlags = self.windowFlags()
if Qt.WindowCloseButtonHint == (wFlags & Qt.WindowCloseButtonHint):
wFlags ^= Qt.WindowCloseButtonHint
self.setWindowFlags(wFlags)
vbox = QVBoxLayout()
self.output = QTextEdit()
if self.parent() and hasattr(self.parent(), 'console'):
self.output.setFont(self.parent().console.font)
vbox.addWidget(self.output)
hbox = QHBoxLayout()
hbox.addStretch()
self.btn_close = QPushButton(tr("Close"))
self.btn_close.clicked.connect(self.accept)
self.btn_close.setEnabled(False)
hbox.addWidget(self.btn_close)
vbox.addLayout(hbox)
self.setLayout(vbox)
示例2: LSPManagerConfigPage
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class LSPManagerConfigPage(PluginConfigPage):
"""Language Server Protocol client manager preferences."""
def get_name(self):
return _('Language Server Protocol Manager')
def get_icon(self):
return ima.icon('lspserver')
def setup_page(self):
self.table = LSPServerTable(self, text_color=ima.MAIN_FG_COLOR)
self.reset_btn = QPushButton(_("Reset to default values"))
self.new_btn = QPushButton(_("Setup a new server"))
self.delete_btn = QPushButton(_("Delete currently selected server"))
self.delete_btn.setEnabled(False)
server_group = QGroupBox(_('Available LSP Servers'))
vlayout = QVBoxLayout()
vlayout.addWidget(server_group)
# vlayout.addWidget(server_settings_description)
vlayout.addWidget(self.table)
vlayout.addWidget(self.new_btn)
vlayout.addWidget(self.delete_btn)
vlayout.addWidget(self.reset_btn)
self.setLayout(vlayout)
self.new_btn.clicked.connect(self.create_new_server)
self.reset_btn.clicked.connect(self.reset_to_default)
self.delete_btn.clicked.connect(self.delete_server)
def reset_to_default(self):
CONF.reset_to_defaults(section='lsp-server')
self.table.load_servers()
self.load_from_conf()
self.set_modified(True)
def create_new_server(self):
self.table.show_editor(new_server=True)
def delete_server(self):
idx = self.table.currentIndex().row()
self.table.delete_server(idx)
self.set_modified(True)
self.delete_btn.setEnabled(False)
def apply_changes(self):
self.table.save_servers()
# TODO: Reset Manager
self.plugin.update_server_list()
示例3: __init__
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
def __init__(self, parent, data, readonly=False,
xlabels=None, ylabels=None):
QWidget.__init__(self, parent)
self.data = data
self.old_data_shape = None
if len(self.data.shape) == 1:
self.old_data_shape = self.data.shape
self.data.shape = (self.data.shape[0], 1)
elif len(self.data.shape) == 0:
self.old_data_shape = self.data.shape
self.data.shape = (1, 1)
format = SUPPORTED_FORMATS.get(data.dtype.name, '%s')
self.model = ArrayModel(self.data, format=format, xlabels=xlabels,
ylabels=ylabels, readonly=readonly, parent=self)
self.view = ArrayView(self, self.model, data.dtype, data.shape)
btn_layout = QHBoxLayout()
btn_layout.setAlignment(Qt.AlignLeft)
btn = QPushButton(_( "Format"))
# disable format button for int type
btn.setEnabled(is_float(data.dtype))
btn_layout.addWidget(btn)
btn.clicked.connect(self.change_format)
btn = QPushButton(_( "Resize"))
btn_layout.addWidget(btn)
btn.clicked.connect(self.view.resize_to_contents)
bgcolor = QCheckBox(_( 'Background color'))
bgcolor.setChecked(self.model.bgcolor_enabled)
bgcolor.setEnabled(self.model.bgcolor_enabled)
bgcolor.stateChanged.connect(self.model.bgcolor)
btn_layout.addWidget(bgcolor)
layout = QVBoxLayout()
layout.addWidget(self.view)
layout.addLayout(btn_layout)
self.setLayout(layout)
示例4: fill_scans
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
def fill_scans(self):
o_step2_handler = Step2Utilities(parent=self.parent.parent)
# table status
self.parent.ui.table_status.insertRow(0)
self.parent.ui.table_status.setRowHeight(0, self.row_height)
_widget = QTextEdit()
_text = "Main Table Empty?<br/><b>Post Processing>Table</b>"
_widget.setHtml(_text)
if o_step2_handler.is_table_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(0, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step2_handler.is_table_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step2_table)
self.parent.ui.table_status.setCellWidget(0, 1, _widget_2)
# at least one row checked
self.parent.ui.table_status.insertRow(1)
self.parent.ui.table_status.setRowHeight(1, self.row_height)
_widget = QTextEdit()
_text = "Main Table Row Selected?<br/><b>Post Processing>Table</b>"
_widget.setHtml(_text)
if o_step2_handler.at_least_one_row_checked():
_widget.setStyleSheet(self.widget_ok)
else:
_widget.setStyleSheet(self.widget_bad)
self.parent.ui.table_status.setCellWidget(1, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(not o_step2_handler.at_least_one_row_checked())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step2_table)
self.parent.ui.table_status.setCellWidget(1, 1, _widget_2)
# output file name
self.parent.ui.table_status.insertRow(2)
self.parent.ui.table_status.setRowHeight(2, self.row_height)
_widget = QTextEdit()
_text = "Output File Name?<br/><b>Post Processing>Output File Name</b>"
_widget.setHtml(_text)
if not o_step2_handler.is_scans_output_file_name_empty():
_widget.setStyleSheet(self.widget_ok)
else:
_widget.setStyleSheet(self.widget_bad)
self.parent.ui.table_status.setCellWidget(2, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step2_handler.is_scans_output_file_name_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step2_scans_output_file_name)
self.parent.ui.table_status.setCellWidget(2, 1, _widget_2)
示例5: TextEditor
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class TextEditor(QDialog):
"""Array Editor Dialog"""
def __init__(self, text, title='', font=None, parent=None,
readonly=False, size=(400, 300)):
QDialog.__init__(self, parent)
# Destroying the C++ object right after closing the dialog box,
# otherwise it may be garbage-collected in another QThread
# (e.g. the editor's analysis thread in Spyder), thus leading to
# a segmentation fault on UNIX or an application crash on Windows
self.setAttribute(Qt.WA_DeleteOnClose)
self.text = None
self.btn_save_and_close = None
# Display text as unicode if it comes as bytes, so users see
# its right representation
if is_binary_string(text):
self.is_binary = True
text = to_text_string(text, 'utf8')
else:
self.is_binary = False
self.layout = QVBoxLayout()
self.setLayout(self.layout)
# Text edit
self.edit = QTextEdit(parent)
self.edit.setReadOnly(readonly)
self.edit.textChanged.connect(self.text_changed)
self.edit.setPlainText(text)
if font is None:
font = get_font()
self.edit.setFont(font)
self.layout.addWidget(self.edit)
# Buttons configuration
btn_layout = QHBoxLayout()
btn_layout.addStretch()
if not readonly:
self.btn_save_and_close = QPushButton(_('Save and Close'))
self.btn_save_and_close.setDisabled(True)
self.btn_save_and_close.clicked.connect(self.accept)
btn_layout.addWidget(self.btn_save_and_close)
self.btn_close = QPushButton(_('Close'))
self.btn_close.setAutoDefault(True)
self.btn_close.setDefault(True)
self.btn_close.clicked.connect(self.reject)
btn_layout.addWidget(self.btn_close)
self.layout.addLayout(btn_layout)
# Make the dialog act as a window
self.setWindowFlags(Qt.Window)
self.setWindowIcon(ima.icon('edit'))
self.setWindowTitle(_("Text editor") + \
"%s" % (" - "+str(title) if str(title) else ""))
self.resize(size[0], size[1])
@Slot()
def text_changed(self):
"""Text has changed"""
# Save text as bytes, if it was initially bytes
if self.is_binary:
self.text = to_binary_string(self.edit.toPlainText(), 'utf8')
else:
self.text = to_text_string(self.edit.toPlainText())
if self.btn_save_and_close:
self.btn_save_and_close.setEnabled(True)
self.btn_save_and_close.setAutoDefault(True)
self.btn_save_and_close.setDefault(True)
def get_value(self):
"""Return modified text"""
# It is import to avoid accessing Qt C++ object as it has probably
# already been destroyed, due to the Qt.WA_DeleteOnClose attribute
return self.text
def setup_and_check(self, value):
"""Verify if TextEditor is able to display strings passed to it."""
try:
to_text_string(value, 'utf8')
return True
except:
return False
示例6: BasePlotCurveEditorDialog
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [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: ProjectDialog
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class ProjectDialog(QDialog):
"""Project creation dialog."""
# path, type, packages
sig_project_creation_requested = Signal(object, object, object)
def __init__(self, parent):
"""Project creation dialog."""
super(ProjectDialog, self).__init__(parent=parent)
# Variables
current_python_version = '.'.join([to_text_string(sys.version_info[0]),
to_text_string(sys.version_info[1])])
python_versions = ['2.7', '3.4', '3.5']
if current_python_version not in python_versions:
python_versions.append(current_python_version)
python_versions = sorted(python_versions)
self.project_name = None
self.location = get_home_dir()
# Widgets
self.groupbox = QGroupBox()
self.radio_new_dir = QRadioButton(_("New directory"))
self.radio_from_dir = QRadioButton(_("Existing directory"))
self.label_project_name = QLabel(_('Project name'))
self.label_location = QLabel(_('Location'))
self.label_project_type = QLabel(_('Project type'))
self.label_python_version = QLabel(_('Python version'))
self.text_project_name = QLineEdit()
self.text_location = QLineEdit(get_home_dir())
self.combo_project_type = QComboBox()
self.combo_python_version = QComboBox()
self.button_select_location = QToolButton()
self.button_cancel = QPushButton(_('Cancel'))
self.button_create = QPushButton(_('Create'))
self.bbox = QDialogButtonBox(Qt.Horizontal)
self.bbox.addButton(self.button_cancel, QDialogButtonBox.ActionRole)
self.bbox.addButton(self.button_create, QDialogButtonBox.ActionRole)
# Widget setup
self.combo_python_version.addItems(python_versions)
self.radio_new_dir.setChecked(True)
self.text_location.setEnabled(True)
self.text_location.setReadOnly(True)
self.button_select_location.setIcon(get_std_icon('DirOpenIcon'))
self.button_cancel.setDefault(True)
self.button_cancel.setAutoDefault(True)
self.button_create.setEnabled(False)
self.combo_project_type.addItems(self._get_project_types())
self.combo_python_version.setCurrentIndex(
python_versions.index(current_python_version))
self.setWindowTitle(_('Create new project'))
self.setFixedWidth(500)
self.label_python_version.setVisible(False)
self.combo_python_version.setVisible(False)
# Layouts
layout_top = QHBoxLayout()
layout_top.addWidget(self.radio_new_dir)
layout_top.addWidget(self.radio_from_dir)
layout_top.addStretch(1)
self.groupbox.setLayout(layout_top)
layout_grid = QGridLayout()
layout_grid.addWidget(self.label_project_name, 0, 0)
layout_grid.addWidget(self.text_project_name, 0, 1, 1, 2)
layout_grid.addWidget(self.label_location, 1, 0)
layout_grid.addWidget(self.text_location, 1, 1)
layout_grid.addWidget(self.button_select_location, 1, 2)
layout_grid.addWidget(self.label_project_type, 2, 0)
layout_grid.addWidget(self.combo_project_type, 2, 1, 1, 2)
layout_grid.addWidget(self.label_python_version, 3, 0)
layout_grid.addWidget(self.combo_python_version, 3, 1, 1, 2)
layout = QVBoxLayout()
layout.addWidget(self.groupbox)
layout.addSpacing(10)
layout.addLayout(layout_grid)
layout.addStretch()
layout.addSpacing(20)
layout.addWidget(self.bbox)
self.setLayout(layout)
# Signals and slots
self.button_select_location.clicked.connect(self.select_location)
self.button_create.clicked.connect(self.create_project)
self.button_cancel.clicked.connect(self.close)
self.radio_from_dir.clicked.connect(self.update_location)
self.radio_new_dir.clicked.connect(self.update_location)
self.text_project_name.textChanged.connect(self.update_location)
def _get_project_types(self):
"""Get all available project types."""
project_types = get_available_project_types()
#.........这里部分代码省略.........
示例8: fill_autonom
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
def fill_autonom(self):
o_step1_handler = Step1Utilities(main_window=self.parent.parent)
# diamond
self.parent.ui.table_status.insertRow(0)
self.parent.ui.table_status.setRowHeight(0, self.row_height)
_widget = QTextEdit()
_text = "Diamond Field Empty?<br/><b>AutoNom>Diamond</b>"
_widget.setHtml(_text)
if o_step1_handler.is_diamond_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(0, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_diamond_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_diamond)
self.parent.ui.table_status.setCellWidget(0, 1, _widget_2)
# diamond background
self.parent.ui.table_status.insertRow(1)
self.parent.ui.table_status.setRowHeight(1, self.row_height)
_widget = QTextEdit()
_text = "Diamond Background Field Empty?<br/><b>AutoNom>Diamond Background</b>"
_widget.setHtml(_text)
if o_step1_handler.is_diamond_background_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(1, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_diamond_background_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_diamond_background)
self.parent.ui.table_status.setCellWidget(1, 1, _widget_2)
# vanadium
self.parent.ui.table_status.insertRow(2)
self.parent.ui.table_status.setRowHeight(2, self.row_height)
_widget = QTextEdit()
_text = "Vanadium Field Empty?<br/><b>AutoNom>Vanadium</b>"
_widget.setHtml(_text)
if o_step1_handler.is_vanadium_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(2, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_vanadium_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_vanadium)
self.parent.ui.table_status.setCellWidget(2, 1, _widget_2)
# vanadium background
self.parent.ui.table_status.insertRow(3)
self.parent.ui.table_status.setRowHeight(3, self.row_height)
_widget = QTextEdit()
_text = "Vanadium Background Field Empty?<br/><b>AutoNom>Vanadium Background</b>"
_widget.setHtml(_text)
if o_step1_handler.is_vanadium_background_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(3, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_vanadium_background_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_vanadium_background)
self.parent.ui.table_status.setCellWidget(3, 1, _widget_2)
# sample background
self.parent.ui.table_status.insertRow(4)
self.parent.ui.table_status.setRowHeight(4, self.row_height)
_widget = QTextEdit()
_text = "Sample Background Field Empty?<br/><b>AutoNom>Sample Background</b>"
_widget.setHtml(_text)
if o_step1_handler.is_sample_background_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(4, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_sample_background_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_sample_background)
self.parent.ui.table_status.setCellWidget(4, 1, _widget_2)
# create folder button
self.parent.ui.table_status.insertRow(5)
self.parent.ui.table_status.setRowHeight(5, self.row_height + 20)
_widget = QTextEdit()
_text = "Create Folder Button Status?<br/><b>AutoNom>Create New AutoNom Folder</b>"
_widget.setHtml(_text)
if o_step1_handler.is_create_folder_button_status_ok():
_widget.setStyleSheet(self.widget_ok)
else:
_widget.setStyleSheet(self.widget_bad)
self.parent.ui.table_status.setCellWidget(5, 0, _widget)
_widget_2 = QPushButton()
#.........这里部分代码省略.........
示例9: ImportWizard
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class ImportWizard(QDialog):
"""Text data import wizard"""
def __init__(self, parent, text,
title=None, icon=None, contents_title=None, varname=None):
QDialog.__init__(self, parent)
# Destroying the C++ object right after closing the dialog box,
# otherwise it may be garbage-collected in another QThread
# (e.g. the editor's analysis thread in Spyder), thus leading to
# a segmentation fault on UNIX or an application crash on Windows
self.setAttribute(Qt.WA_DeleteOnClose)
if title is None:
title = _("Import wizard")
self.setWindowTitle(title)
if icon is None:
self.setWindowIcon(ima.icon('fileimport'))
if contents_title is None:
contents_title = _("Raw text")
if varname is None:
varname = _("variable_name")
self.var_name, self.clip_data = None, None
# Setting GUI
self.tab_widget = QTabWidget(self)
self.text_widget = ContentsWidget(self, text)
self.table_widget = PreviewWidget(self)
self.tab_widget.addTab(self.text_widget, _("text"))
self.tab_widget.setTabText(0, contents_title)
self.tab_widget.addTab(self.table_widget, _("table"))
self.tab_widget.setTabText(1, _("Preview"))
self.tab_widget.setTabEnabled(1, False)
name_layout = QHBoxLayout()
name_label = QLabel(_("Variable Name"))
name_layout.addWidget(name_label)
self.name_edt = QLineEdit()
self.name_edt.setText(varname)
name_layout.addWidget(self.name_edt)
btns_layout = QHBoxLayout()
cancel_btn = QPushButton(_("Cancel"))
btns_layout.addWidget(cancel_btn)
cancel_btn.clicked.connect(self.reject)
h_spacer = QSpacerItem(40, 20,
QSizePolicy.Expanding, QSizePolicy.Minimum)
btns_layout.addItem(h_spacer)
self.back_btn = QPushButton(_("Previous"))
self.back_btn.setEnabled(False)
btns_layout.addWidget(self.back_btn)
self.back_btn.clicked.connect(ft_partial(self._set_step, step=-1))
self.fwd_btn = QPushButton(_("Next"))
btns_layout.addWidget(self.fwd_btn)
self.fwd_btn.clicked.connect(ft_partial(self._set_step, step=1))
self.done_btn = QPushButton(_("Done"))
self.done_btn.setEnabled(False)
btns_layout.addWidget(self.done_btn)
self.done_btn.clicked.connect(self.process)
self.text_widget.asDataChanged.connect(self.fwd_btn.setEnabled)
self.text_widget.asDataChanged.connect(self.done_btn.setDisabled)
layout = QVBoxLayout()
layout.addLayout(name_layout)
layout.addWidget(self.tab_widget)
layout.addLayout(btns_layout)
self.setLayout(layout)
def _focus_tab(self, tab_idx):
"""Change tab focus"""
for i in range(self.tab_widget.count()):
self.tab_widget.setTabEnabled(i, False)
self.tab_widget.setTabEnabled(tab_idx, True)
self.tab_widget.setCurrentIndex(tab_idx)
def _set_step(self, step):
"""Proceed to a given step"""
new_tab = self.tab_widget.currentIndex() + step
assert new_tab < self.tab_widget.count() and new_tab >= 0
if new_tab == self.tab_widget.count()-1:
try:
self.table_widget.open_data(self._get_plain_text(),
self.text_widget.get_col_sep(),
self.text_widget.get_row_sep(),
self.text_widget.trnsp_box.isChecked(),
self.text_widget.get_skiprows(),
self.text_widget.get_comments())
self.done_btn.setEnabled(True)
self.done_btn.setDefault(True)
self.fwd_btn.setEnabled(False)
self.back_btn.setEnabled(True)
except (SyntaxError, AssertionError) as error:
QMessageBox.critical(self, _("Import wizard"),
_("<b>Unable to proceed to next step</b>"
"<br><br>Please check your entries."
"<br><br>Error message:<br>%s") % str(error))
return
#.........这里部分代码省略.........
示例10: SpyderErrorDialog
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class SpyderErrorDialog(QDialog):
"""Custom error dialog for error reporting."""
def __init__(self, parent=None, is_report=False):
QDialog.__init__(self, parent)
self.is_report = is_report
self.setWindowTitle(_("Issue reporter"))
self.setModal(True)
# To save the traceback sent to the internal console
self.error_traceback = ""
# Dialog main label
if self.is_report:
title = _("Please fill the following information")
else:
title = _("Spyder has encountered an internal problem!")
main_label = QLabel(
_("<h3>{title}</h3>"
"Before reporting this problem, <i>please</i> consult our "
"comprehensive "
"<b><a href=\"{trouble_url}\">Troubleshooting Guide</a></b> "
"which should help solve most issues, and search for "
"<b><a href=\"{project_url}\">known bugs</a></b> "
"matching your error message or problem description for a "
"quicker solution."
).format(title=title, trouble_url=__trouble_url__,
project_url=__project_url__))
main_label.setOpenExternalLinks(True)
main_label.setWordWrap(True)
main_label.setAlignment(Qt.AlignJustify)
main_label.setStyleSheet('font-size: 12px;')
# Issue title
self.title = QLineEdit()
self.title.textChanged.connect(self._contents_changed)
self.title_chars_label = QLabel(_("{} more characters "
"to go...").format(TITLE_MIN_CHARS))
form_layout = QFormLayout()
form_layout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow)
red_asterisk = '<font color="Red">*</font>'
title_label = QLabel(_("<b>Title</b>: {}").format(red_asterisk))
form_layout.setWidget(0, QFormLayout.LabelRole, title_label)
form_layout.setWidget(0, QFormLayout.FieldRole, self.title)
# Description
steps_header = QLabel(
_("<b>Steps to reproduce:</b> {}").format(red_asterisk))
steps_text = QLabel(_("Please enter a detailed step-by-step "
"description (in English) of what led up to "
"the problem below. Issue reports without a "
"clear way to reproduce them will be closed."))
steps_text.setWordWrap(True)
steps_text.setAlignment(Qt.AlignJustify)
steps_text.setStyleSheet('font-size: 12px;')
# Field to input the description of the problem
self.input_description = DescriptionWidget(self)
# Only allow to submit to Github if we have a long enough description
self.input_description.textChanged.connect(self._contents_changed)
# Widget to show errors
self.details = ShowErrorWidget(self)
self.details.set_pythonshell_font(get_font())
self.details.hide()
# Label to show missing chars
self.initial_chars = len(self.input_description.toPlainText())
self.desc_chars_label = QLabel(_("{} more characters "
"to go...").format(DESC_MIN_CHARS))
# Checkbox to dismiss future errors
self.dismiss_box = QCheckBox(_("Hide all future errors during this "
"session"))
if self.is_report:
self.dismiss_box.hide()
# Dialog buttons
gh_icon = ima.icon('github')
self.submit_btn = QPushButton(gh_icon, _('Submit to Github'))
self.submit_btn.setEnabled(False)
self.submit_btn.clicked.connect(self._submit_to_github)
self.details_btn = QPushButton(_('Show details'))
self.details_btn.clicked.connect(self._show_details)
if self.is_report:
self.details_btn.hide()
self.close_btn = QPushButton(_('Close'))
if self.is_report:
self.close_btn.clicked.connect(self.reject)
# Buttons layout
buttons_layout = QHBoxLayout()
buttons_layout.addWidget(self.submit_btn)
buttons_layout.addWidget(self.details_btn)
buttons_layout.addWidget(self.close_btn)
#.........这里部分代码省略.........
示例11: fill_mantid
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
def fill_mantid(self):
self.row_height = 62
o_step1_handler = Step1Utilities(main_window=self.parent.parent)
o_step2_handler = Step2Utilities(parent=self.parent.parent)
# vanadium
_row = 0
self.parent.ui.table_status.insertRow(_row)
self.parent.ui.table_status.setRowHeight(_row, self.row_height)
_widget = QTextEdit()
_text = "Vanadium Field Empty?<br/><b>AutoNom>Vanadium</b>"
_widget.setHtml(_text)
if o_step1_handler.is_vanadium_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(_row, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_vanadium_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_vanadium)
self.parent.ui.table_status.setCellWidget(_row, 1, _widget_2)
# vanadium background
_row = 1
self.parent.ui.table_status.insertRow(_row)
self.parent.ui.table_status.setRowHeight(_row, self.row_height)
_widget = QTextEdit()
_text = "Vanadium Background Field Empty?<br/><b>AutoNom>Vanadium Background</b>"
_widget.setHtml(_text)
if o_step1_handler.is_vanadium_background_text_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(_row, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step1_handler.is_vanadium_background_text_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step1_vanadium_background)
self.parent.ui.table_status.setCellWidget(_row, 1, _widget_2)
# table status
_row = 2
self.parent.ui.table_status.insertRow(_row)
self.parent.ui.table_status.setRowHeight(_row, self.row_height)
_widget = QTextEdit()
_text = "Main Table Empty?<br/><b>Post Processing>Table</b>"
_widget.setHtml(_text)
if o_step2_handler.is_table_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(_row, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step2_handler.is_table_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step2_table)
self.parent.ui.table_status.setCellWidget(_row, 1, _widget_2)
# at least one row checked
_row = 3
self.parent.ui.table_status.insertRow(_row)
self.parent.ui.table_status.setRowHeight(_row, self.row_height)
_widget = QTextEdit()
_text = "Main Table Row Selected?<br/><b>Post Processing>Table</b>"
_widget.setHtml(_text)
if o_step2_handler.at_least_one_row_checked():
_widget.setStyleSheet(self.widget_ok)
else:
_widget.setStyleSheet(self.widget_bad)
self.parent.ui.table_status.setCellWidget(_row, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(not o_step2_handler.at_least_one_row_checked())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step2_table)
self.parent.ui.table_status.setCellWidget(_row, 1, _widget_2)
# calibration
_row = 4
self.parent.ui.table_status.insertRow(_row)
self.parent.ui.table_status.setRowHeight(_row, self.row_height)
_widget = QTextEdit()
_text = "Calibration File Selected?<br/><b>Post Processing>Rietveld>Calibration</b>"
_widget.setHtml(_text)
if o_step2_handler.is_mantid_calibration_empty():
_widget.setStyleSheet(self.widget_bad)
else:
_widget.setStyleSheet(self.widget_ok)
self.parent.ui.table_status.setCellWidget(_row, 0, _widget)
_widget_2 = QPushButton()
_widget_2.setEnabled(o_step2_handler.is_mantid_calibration_empty())
_widget_2.setText(self.jump_message)
_widget_2.clicked.connect(self.jump_to_step2_mantid_browse_calibration)
self.parent.ui.table_status.setCellWidget(_row, 1, _widget_2)
# characterization
_row += 1
self.parent.ui.table_status.insertRow(_row)
self.parent.ui.table_status.setRowHeight(_row, self.row_height)
#.........这里部分代码省略.........
示例12: SummaryWidget
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class SummaryWidget(QWidget):
open = Signal([str, list])
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.uid_label = QLabel()
self.open_individually_button = QPushButton('Open individually')
self.open_individually_button.hide()
self.open_individually_button.clicked.connect(self._open_individually)
self.open_overplotted_button = QPushButton('Open over-plotted')
self.open_overplotted_button.hide()
self.open_overplotted_button.clicked.connect(self._open_overplotted)
self.open_overplotted_on_button = QPushButton('Add to tab...')
self.open_overplotted_on_button.hide()
self.open_overplotted_on_button.setEnabled(False)
self.open_overplotted_on_button.clicked.connect(self._open_overplotted_on)
self.copy_uid_button = QPushButton('Copy UID to Clipboard')
self.copy_uid_button.hide()
self.copy_uid_button.clicked.connect(self._copy_uid)
self.streams = QLabel()
self.entries = []
uid_layout = QHBoxLayout()
uid_layout.addWidget(self.uid_label)
uid_layout.addWidget(self.copy_uid_button)
layout = QVBoxLayout()
layout.addWidget(self.open_individually_button)
layout.addWidget(self.open_overplotted_button)
layout.addWidget(self.open_overplotted_on_button)
layout.addLayout(uid_layout)
layout.addWidget(self.streams)
self.setLayout(layout)
self._tab_titles = ()
def cache_tab_titles(self, titles):
self._tab_titles = titles
self.open_overplotted_on_button.setEnabled(bool(titles))
def _copy_uid(self):
QApplication.clipboard().setText(self.uid)
def _open_individually(self):
for entry in self.entries:
self.open.emit(None, [entry])
def _open_overplotted(self):
self.open.emit(None, self.entries)
def _open_overplotted_on(self):
item, ok = QInputDialog.getItem(
self, "Select Tab", "Tab", self._tab_titles, 0, False)
if not ok:
return
self.open.emit(item, self.entries)
def set_entries(self, entries):
self.entries.clear()
self.entries.extend(entries)
if not entries:
self.uid_label.setText('')
self.streams.setText('')
self.copy_uid_button.hide()
self.open_individually_button.hide()
self.open_overplotted_button.hide()
self.open_overplotted_on_button.hide()
elif len(entries) == 1:
entry, = entries
self.uid = entry.metadata['start']['uid']
self.uid_label.setText(self.uid[:8])
self.copy_uid_button.show()
self.open_individually_button.show()
self.open_individually_button.setText('Open')
self.open_overplotted_on_button.show()
self.open_overplotted_button.hide()
num_events = entry.metadata.get('stop', {}).get('num_events')
if num_events:
self.streams.setText(
'Streams:\n' + ('\n'.join(f'{k} ({v} Events)' for k, v in num_events.items())))
else:
# Either the RunStop document has not been emitted yet or was never
# emitted due to critical failure or this is an old document stream
# from before 'num_events' was added to the schema. Get the list of
# stream names another way, and omit the Event count.
self.streams.setText('Streams:\n' + ('\n'.join(list(entry()))))
else:
self.uid_label.setText('(Multiple Selected)')
self.streams.setText('')
self.copy_uid_button.hide()
self.open_individually_button.setText('Open individually')
self.open_individually_button.show()
self.open_overplotted_button.show()
self.open_overplotted_on_button.show()
示例13: SpyderErrorDialog
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class SpyderErrorDialog(QDialog):
"""Custom error dialog for error reporting."""
def __init__(self, parent=None):
QDialog.__init__(self, parent)
self.setWindowTitle(_("Spyder internal error"))
self.setModal(True)
# To save the traceback sent to the internal console
self.error_traceback = ""
# Dialog main label
self.main_label = QLabel(
_("""<b>Spyder has encountered an internal problem</b><hr>
Please enter below a step-by-step description of
your problem (in English). Issue reports without
a clear way to reproduce them will be closed.
<br><br>
<b>Note</b>: You need a Github account for this.
"""))
self.main_label.setWordWrap(True)
self.main_label.setAlignment(Qt.AlignJustify)
# Field to input the description of the problem
self.input_description = DescriptionWidget(self)
# Only allow to submit to Github if we have a long enough description
self.input_description.textChanged.connect(self._description_changed)
# Widget to show errors
self.details = ShowErrorWidget(self)
self.details.set_pythonshell_font(get_font())
self.details.hide()
# Label to show missing chars
self.initial_chars = len(self.input_description.toPlainText())
self.chars_label = QLabel(_("Enter at least {} "
"characters".format(MIN_CHARS)))
# Checkbox to dismiss future errors
self.dismiss_box = QCheckBox()
self.dismiss_box.setText(_("Don't show again during this session"))
# Labels layout
labels_layout = QHBoxLayout()
labels_layout.addWidget(self.chars_label)
labels_layout.addWidget(self.dismiss_box, 0, Qt.AlignRight)
# Dialog buttons
self.submit_btn = QPushButton(_('Submit to Github'))
self.submit_btn.setEnabled(False)
self.submit_btn.clicked.connect(self._submit_to_github)
self.details_btn = QPushButton(_('Show details'))
self.details_btn.clicked.connect(self._show_details)
self.close_btn = QPushButton(_('Close'))
# Buttons layout
buttons_layout = QHBoxLayout()
buttons_layout.addWidget(self.submit_btn)
buttons_layout.addWidget(self.details_btn)
buttons_layout.addWidget(self.close_btn)
# Main layout
vlayout = QVBoxLayout()
vlayout.addWidget(self.main_label)
vlayout.addWidget(self.input_description)
vlayout.addWidget(self.details)
vlayout.addLayout(labels_layout)
vlayout.addLayout(buttons_layout)
self.setLayout(vlayout)
self.resize(600, 420)
self.input_description.setFocus()
def _submit_to_github(self):
"""Action to take when pressing the submit button."""
main = self.parent().main
# Getting description and traceback
description = self.input_description.toPlainText()
traceback = self.error_traceback[:-1] # Remove last eol
# Render issue
issue_text = main.render_issue(description=description,
traceback=traceback)
# Copy issue to clipboard
QApplication.clipboard().setText(issue_text)
# Submit issue to Github
issue_body=("<!--- "
"Please paste the contents of your clipboard "
"below to complete reporting your problem. "
"--->\n\n")
main.report_issue(body=issue_body,
title="Automatic error report")
def append_traceback(self, text):
#.........这里部分代码省略.........
示例14: NameCategoryPrompt
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
class NameCategoryPrompt(ExToolWindow):
def __init__(self, main_window, parent=None):
super(NameCategoryPrompt, self).__init__(parent)
self.setWindowTitle(tr("Plugin properties"))
self.ui = main_window
self.create_controls()
def checks_changed(self):
menu = self.chk_menu.isChecked()
toolbar = self.chk_toolbar.isChecked()
icon = self.chk_icon.isChecked()
if menu or toolbar:
self.txt_category.setEnabled(True)
else:
self.txt_category.setEnabled(False)
self.txt_iconpath.setEnabled(icon)
self.btn_browse_icon.setEnabled(icon)
def browse_icon(self):
formats = QtGui.QImageReader.supportedImageFormats()
formats = [str(f, encoding='ascii') for f in formats]
# Add one filter that takes all supported:
type_filter = tr("Supported formats")
type_filter += ' (*.{0})'.format(' *.'.join(formats))
# Add all as individual options
type_filter += ';;' + tr("All files") + \
' (*.*) ;;*.' + ';;*.'.join(formats)
path = QtWidgets.QFileDialog.getOpenFileName(self,
tr("Pick icon"),
os.path.dirname(self.ui.cur_dir),
type_filter)
if isinstance(path, tuple): # Pyside returns tuple, PyQt not
path = path[0]
if path is None:
return
self.txt_iconpath.setText(path)
def create_controls(self):
self.txt_name = QLineEdit()
self.chk_menu = QCheckBox(tr("Menu entry"))
self.chk_menu.setChecked(True)
self.chk_toolbar = QCheckBox(tr("Toolbar button"))
self.chk_toolbar.setChecked(True)
self.txt_category = QLineEdit()
self.chk_icon = QCheckBox()
self.chk_toolbar.setChecked(False)
self.txt_iconpath = QLineEdit()
self.btn_browse_icon = QPushButton("...")
self.txt_iconpath.setEnabled(False)
self.btn_browse_icon.setEnabled(False)
btns = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel,
QtCore.Qt.Horizontal)
self.chk_menu.toggled.connect(self.checks_changed)
self.chk_toolbar.toggled.connect(self.checks_changed)
self.chk_icon.toggled.connect(self.checks_changed)
self.btn_browse_icon.clicked.connect(self.browse_icon)
btns.accepted.connect(self.accept)
btns.rejected.connect(self.reject)
hbox = QHBoxLayout()
for w in [self.chk_icon, self.txt_iconpath, self.btn_browse_icon]:
hbox.addWidget(w)
form = QFormLayout()
form.addRow(tr("Name"), self.txt_name)
form.addRow(self.chk_menu, self.chk_toolbar)
form.addRow(tr("Category"), self.txt_category)
form.addRow(tr("Icon"), hbox)
vbox = QVBoxLayout(self)
vbox.addLayout(form)
vbox.addWidget(btns)
self.setLayout(vbox)
示例15: ArrayEditor
# 需要导入模块: from qtpy.QtWidgets import QPushButton [as 别名]
# 或者: from qtpy.QtWidgets.QPushButton import setEnabled [as 别名]
#.........这里部分代码省略.........
if is_masked_array:
label = QLabel(_("<u>Warning</u>: changes are applied separately"))
label.setToolTip(_("For performance reasons, changes applied "\
"to masked array won't be reflected in "\
"array's data (and vice-versa)."))
btn_layout.addWidget(label)
btn_layout.addStretch()
if not readonly:
self.btn_save_and_close = QPushButton(_('Save and Close'))
self.btn_save_and_close.setDisabled(True)
self.btn_save_and_close.clicked.connect(self.accept)
btn_layout.addWidget(self.btn_save_and_close)
self.btn_close = QPushButton(_('Close'))
self.btn_close.setAutoDefault(True)
self.btn_close.setDefault(True)
self.btn_close.clicked.connect(self.reject)
btn_layout.addWidget(self.btn_close)
self.layout.addLayout(btn_layout, 2, 0)
self.setMinimumSize(400, 300)
# Make the dialog act as a window
self.setWindowFlags(Qt.Window)
return True
@Slot(QModelIndex, QModelIndex)
def save_and_close_enable(self, left_top, bottom_right):
"""Handle the data change event to enable the save and close button."""
if self.btn_save_and_close:
self.btn_save_and_close.setEnabled(True)
self.btn_save_and_close.setAutoDefault(True)
self.btn_save_and_close.setDefault(True)
def current_widget_changed(self, index):
self.arraywidget = self.stack.widget(index)
self.arraywidget.model.dataChanged.connect(self.save_and_close_enable)
def change_active_widget(self, index):
"""
This is implemented for handling negative values in index for
3d arrays, to give the same behavior as slicing
"""
string_index = [':']*3
string_index[self.last_dim] = '<font color=red>%i</font>'
self.slicing_label.setText((r"Slicing: [" + ", ".join(string_index) +
"]") % index)
if index < 0:
data_index = self.data.shape[self.last_dim] + index
else:
data_index = index
slice_index = [slice(None)]*3
slice_index[self.last_dim] = data_index
stack_index = self.dim_indexes[self.last_dim].get(data_index)
if stack_index is None:
stack_index = self.stack.count()
try:
self.stack.addWidget(ArrayEditorWidget(
self, self.data[tuple(slice_index)]))
except IndexError: # Handle arrays of size 0 in one axis
self.stack.addWidget(ArrayEditorWidget(self, self.data))
self.dim_indexes[self.last_dim][data_index] = stack_index