本文整理汇总了Python中PyQt5.QtWidgets.QStackedWidget.setCurrentIndex方法的典型用法代码示例。如果您正苦于以下问题:Python QStackedWidget.setCurrentIndex方法的具体用法?Python QStackedWidget.setCurrentIndex怎么用?Python QStackedWidget.setCurrentIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QStackedWidget
的用法示例。
在下文中一共展示了QStackedWidget.setCurrentIndex方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: setCurrentIndex
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
def setCurrentIndex(self, index):
"""Change the current widget being displayed with an animation."""
old_widget = self.currentWidget()
new_widget = self.widget(index)
if old_widget != new_widget:
self.fader_widget = ui_tools.FaderWidget(self.currentWidget(),
self.widget(index))
QStackedWidget.setCurrentIndex(self, index)
示例2: Root
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class Root(QMainWindow):
task_list_index = 0
task_view_index = 1
def __init__(self):
super().__init__()
self.model = None
self.task_view = None
self.initUI()
def initUI(self):
# self.cal = QCalendarWidget(self)
# self.cal.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader)
# self.cal.setGeometry(0, 0, 250, 250)
self.model = TaskModel()
self.central = QStackedWidget()
task_list = TaskList(self.model)
task_list.open.connect(self.task_open)
self.central.insertWidget(Root.task_list_index, task_list)
self.task_view = TaskView(self.model)
self.task_view.close.connect(self.task_view_close)
self.central.insertWidget(Root.task_view_index, self.task_view)
self.central.setCurrentIndex(Root.task_list_index)
self.setCentralWidget(self.central)
# QDialog flags:
# Qt.Dialog |
# Qt.WindowTitleHint |
# Qt.WindowSystemMenuHint |
# Qt.WindowContextHelpButtonHint |
# Qt.WindowCloseButtonHint
self.setWindowFlags(Qt.Dialog | Qt.WindowStaysOnTopHint)
self.setGeometry(700, 300, 250, 300)
self.setWindowTitle('Calendar')
@pyqtSlot(int)
def task_open(self, index):
self.task_view.set_task(index)
self.central.setCurrentIndex(Root.task_view_index)
@pyqtSlot()
def task_view_close(self):
self.central.setCurrentIndex(Root.task_list_index)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Escape:
self.close()
示例3: XTabWidget
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class XTabWidget(QFrame):
addClicked = pyqtSignal()
currentChanged = pyqtSignal(int)
tabCloseRequested = pyqtSignal(int)
def __init__(self, QWidget_parent=None):
super(XTabWidget, self).__init__(QWidget_parent)
# setup self frame
self.setFrameShadow(QFrame.Raised)
# self.setFrameShape(QFrame.StyledPanel)
self.setFrameShape(QFrame.NoFrame)
# layouts
self._layout = QVBoxLayout()
self._layout.setContentsMargins(0, 0, 0, 0)
self._layout.setSpacing(2)
self._layout_top = QHBoxLayout()
self._layout_top.setContentsMargins(0, 0, 0, 0)
# stacked widget
self._stack = QStackedWidget(self)
# tab bar
self._tabbar = QTabBar(self)
self._tabbar.setTabsClosable(True)
self._tabbar.setMovable(False)
self._tabbar.setExpanding(False)
self._tabbar.setShape(QTabBar.RoundedNorth)
self._tabbar.currentChanged.connect(self.on_tab_current_changed)
self._tabbar.tabCloseRequested.connect(self.on_tab_close_requested)
# button "add"
self._btn_add = QPushButton('+', self)
self._btn_add.setMaximumSize(QSize(22, 22))
self._btn_add.clicked.connect(self.on_btn_add_clicked)
# complete layout
self._layout_top.addWidget(self._btn_add, 0, Qt.AlignVCenter)
self._layout_top.addWidget(self._tabbar, 1, Qt.AlignVCenter)
self._layout.addLayout(self._layout_top)
self._layout.addWidget(self._stack)
self.setLayout(self._layout)
def addTab(self, widget: QWidget, title: str, closeable: bool = True) -> int:
# add tab to tabbar
tab_index = self._tabbar.addTab(title)
if not closeable:
self._tabbar.setTabButton(tab_index, QTabBar.RightSide, None)
self._tabbar.setTabButton(tab_index, QTabBar.LeftSide, None) # it MAY be on the left too!!
# add widget into stackedwidget
self._stack.addWidget(widget)
return tab_index
def removeTab(self, index: int):
# remove from tab bar
self._tabbar.removeTab(index)
# remove from stacked widget
widget = self._stack.widget(index)
if widget is not None:
# Removes widget from the QStackedWidget. i.e., widget
# is not deleted but simply removed from the stacked layout,
# causing it to be hidden.
self._stack.removeWidget(widget)
# and now we probably want to delete it to avoid memory leak
widget.close()
widget.deleteLater()
def tabBar(self) -> QTabBar:
return self._tabbar
def enableButtonAdd(self, enableState: bool = True):
self._btn_add.setEnabled(enableState)
def setCurrentIndex(self, index: int):
self._stack.setCurrentIndex(index)
self._tabbar.setCurrentIndex(index)
def count(self) -> int:
return self._tabbar.count()
def tabWidget(self, index: int):
"""
Return page widget, inserted at index index
:param index:
:return: QWidget inserted at specified index, or None
"""
widget = self._stack.widget(index)
return widget
@pyqtSlot()
def on_btn_add_clicked(self):
self.addClicked.emit()
@pyqtSlot(int)
def on_tab_current_changed(self, idx: int):
self._stack.setCurrentIndex(idx)
self.currentChanged.emit(idx)
@pyqtSlot(int)
def on_tab_close_requested(self, idx: int):
self.tabCloseRequested.emit(idx)
示例4: AppSettings
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class AppSettings(QDialog):
SettingsWidgets = []
def __init__(self, conf, **kwargs):
super().__init__(**kwargs)
self.conf = conf
self.setWindowTitle('LiSP preferences')
self.setWindowModality(QtCore.Qt.ApplicationModal)
self.setMaximumSize(635, 530)
self.setMinimumSize(635, 530)
self.resize(635, 530)
self.listWidget = QListWidget(self)
self.listWidget.setGeometry(QtCore.QRect(5, 10, 185, 470))
self.sections = QStackedWidget(self)
self.sections.setGeometry(QtCore.QRect(200, 10, 430, 470))
for widget in self.SettingsWidgets:
widget = widget(QtCore.QSize(430, 465), self)
widget.set_configuration(self.conf)
self.listWidget.addItem(widget.NAME)
self.sections.addWidget(widget)
if len(self.SettingsWidgets) > 0:
self.listWidget.setCurrentRow(0)
self.listWidget.currentItemChanged.connect(self._change_page)
self.dialogButtons = QDialogButtonBox(self)
self.dialogButtons.setGeometry(10, 495, 615, 30)
self.dialogButtons.setStandardButtons(QDialogButtonBox.Cancel |
QDialogButtonBox.Ok)
self.dialogButtons.rejected.connect(self.reject)
self.dialogButtons.accepted.connect(self.accept)
def get_configuraton(self):
conf = {}
for n in range(self.sections.count()):
widget = self.sections.widget(n)
newconf = widget.get_configuration()
deep_update(conf, newconf)
return conf
@classmethod
def register_settings_widget(cls, widget):
if widget not in cls.SettingsWidgets:
cls.SettingsWidgets.append(widget)
@classmethod
def unregister_settings_widget(cls, widget):
if widget not in cls.SettingsWidgets:
cls.SettingsWidgets.remove(widget)
def _change_page(self, current, previous):
if not current:
current = previous
self.sections.setCurrentIndex(self.listWidget.row(current))
示例5: ConfigDialog
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class ConfigDialog(QDialog):
def __init__(self, parent=None):
super(ConfigDialog, self).__init__(parent)
self.contentsWidget = QListWidget()
self.contentsWidget.setViewMode(QListView.IconMode)
self.contentsWidget.setIconSize(QSize(96, 84))
self.contentsWidget.setMovement(QListView.Static)
self.contentsWidget.setMaximumWidth(128)
self.contentsWidget.setSpacing(12)
self.pagesWidget = QStackedWidget()
self.pagesWidget.addWidget(ConfigurationPage())
self.pagesWidget.addWidget(UpdatePage())
self.pagesWidget.addWidget(QueryPage())
closeButton = QPushButton("Close")
self.createIcons()
self.contentsWidget.setCurrentRow(0)
closeButton.clicked.connect(self.close)
horizontalLayout = QHBoxLayout()
horizontalLayout.addWidget(self.contentsWidget)
horizontalLayout.addWidget(self.pagesWidget, 1)
buttonsLayout = QHBoxLayout()
buttonsLayout.addStretch(1)
buttonsLayout.addWidget(closeButton)
mainLayout = QVBoxLayout()
mainLayout.addLayout(horizontalLayout)
mainLayout.addStretch(1)
mainLayout.addSpacing(12)
mainLayout.addLayout(buttonsLayout)
self.setLayout(mainLayout)
self.setWindowTitle("Config Dialog")
def changePage(self, current, previous):
if not current:
current = previous
self.pagesWidget.setCurrentIndex(self.contentsWidget.row(current))
def createIcons(self):
configButton = QListWidgetItem(self.contentsWidget)
configButton.setIcon(QIcon(':/images/config.png'))
configButton.setText("Configuration")
configButton.setTextAlignment(Qt.AlignHCenter)
configButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
updateButton = QListWidgetItem(self.contentsWidget)
updateButton.setIcon(QIcon(':/images/update.png'))
updateButton.setText("Update")
updateButton.setTextAlignment(Qt.AlignHCenter)
updateButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
queryButton = QListWidgetItem(self.contentsWidget)
queryButton.setIcon(QIcon(':/images/query.png'))
queryButton.setText("Query")
queryButton.setTextAlignment(Qt.AlignHCenter)
queryButton.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
self.contentsWidget.currentItemChanged.connect(self.changePage)
示例6: TableWidget
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class TableWidget(QSplitter):
def __init__(self):
super(TableWidget, self).__init__()
# vbox = QVBoxLayout(self)
# vbox.setContentsMargins(0, 0, 0, 0)
self._tabs = QTabWidget()
self._tabs.setAutoFillBackground(True)
p = self._tabs.palette()
p.setColor(p.Window, QColor("white"))
self._tabs.setPalette(p)
self._other_tab = QTabWidget()
self._other_tab.setAutoFillBackground(True)
self._other_tab.setPalette(p)
self.addWidget(self._tabs)
self.addWidget(self._other_tab)
self.setSizes([1, 1])
self._other_tab.hide()
self.relations = {}
# Stack
self.stacked = QStackedWidget()
self._tabs.addTab(self.stacked, "Workspace")
self.stacked_result = QStackedWidget()
self._tabs.addTab(self.stacked_result, self.tr("Resultados"))
btn_split = QToolButton()
btn_split.setToolTip(self.tr("Click para dividir la pantalla"))
btn_split.setAutoRaise(True)
btn_split.setIcon(QIcon(":img/split"))
self._tabs.setCornerWidget(btn_split)
btn_split.clicked.connect(self._split)
btn_split = QToolButton()
btn_split.setToolTip(self.tr("Click para juntar las pantallas"))
btn_split.setAutoRaise(True)
btn_split.setIcon(QIcon(":img/split"))
btn_split.clicked.connect(self._unsplit)
self._other_tab.setCornerWidget(btn_split)
# self.setContextMenuPolicy(Qt.CustomContextMenu)
# self.customContextMenuRequested.connect(self._show_menu)
lateral_widget = Pireal.get_service("lateral_widget")
lateral_widget.resultClicked.connect(self._on_result_list_clicked)
lateral_widget.resultSelectionChanged.connect(
lambda index: self.stacked_result.setCurrentIndex(index))
# lateral_widget.newRowsRequested.connect(self._insert_rows)
def insert_rows(self, tuplas):
current_view = self.current_table()
if current_view is not None:
model = current_view.model()
for tupla in tuplas:
model.insertRow(model.rowCount(), tupla)
current_view.adjust_columns()
def _on_result_list_clicked(self, index):
self.stacked_result.setCurrentIndex(index)
if not self._other_tab.isVisible():
self._tabs.setCurrentIndex(1)
def _unsplit(self):
self._other_tab.hide()
result_widget = self._other_tab.widget(0)
self._tabs.addTab(result_widget, self.tr("Resultados"))
self._tabs.cornerWidget().show()
def _split(self):
result_widget = self._tabs.widget(1)
self._other_tab.addTab(result_widget, self.tr("Resultados"))
self._other_tab.show()
self.setSizes([1, 1])
self._tabs.cornerWidget().hide()
self.setOrientation(Qt.Horizontal)
def _show_menu(self, position):
menu = QMenu(self)
if self.count() > 0:
add_tuple_action = menu.addAction(self.tr("Agregar Tupla"))
add_col_action = menu.addAction(self.tr("Add Column"))
add_tuple_action.triggered.connect(self.add_tuple)
add_col_action.triggered.connect(self.add_column)
menu.addSeparator()
add_relation_action = menu.addAction(self.tr("Create new Relation"))
add_relation_action.triggered.connect(self.__new_relation)
menu.exec_(self.mapToGlobal(position))
def __new_relation(self):
central_service = Pireal.get_service("central")
central_service.create_new_relation()
def count(self):
return self.stacked.count()
#.........这里部分代码省略.........
示例7: setCurrentIndex
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
def setCurrentIndex(self, index):
self.fader_widget = ui_tools.FaderWidget(self.currentWidget(),
self.widget(index))
QStackedWidget.setCurrentIndex(self, index)
示例8: E5SideBar
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class E5SideBar(QWidget):
"""
Class implementing a sidebar with a widget area, that is hidden or shown,
if the current tab is clicked again.
"""
Version = 1
North = 0
East = 1
South = 2
West = 3
def __init__(self, orientation=None, delay=200, parent=None):
"""
Constructor
@param orientation orientation of the sidebar widget (North, East,
South, West)
@param delay value for the expand/shrink delay in milliseconds
(integer)
@param parent parent widget (QWidget)
"""
super(E5SideBar, self).__init__(parent)
self.__tabBar = QTabBar()
self.__tabBar.setDrawBase(True)
self.__tabBar.setShape(QTabBar.RoundedNorth)
self.__tabBar.setUsesScrollButtons(True)
self.__tabBar.setDrawBase(False)
self.__stackedWidget = QStackedWidget(self)
self.__stackedWidget.setContentsMargins(0, 0, 0, 0)
self.__autoHideButton = QToolButton()
self.__autoHideButton.setCheckable(True)
self.__autoHideButton.setIcon(
UI.PixmapCache.getIcon("autoHideOff.png"))
self.__autoHideButton.setChecked(True)
self.__autoHideButton.setToolTip(
self.tr("Deselect to activate automatic collapsing"))
self.barLayout = QBoxLayout(QBoxLayout.LeftToRight)
self.barLayout.setContentsMargins(0, 0, 0, 0)
self.layout = QBoxLayout(QBoxLayout.TopToBottom)
self.layout.setContentsMargins(0, 0, 0, 0)
self.layout.setSpacing(0)
self.barLayout.addWidget(self.__autoHideButton)
self.barLayout.addWidget(self.__tabBar)
self.layout.addLayout(self.barLayout)
self.layout.addWidget(self.__stackedWidget)
self.setLayout(self.layout)
# initialize the delay timer
self.__actionMethod = None
self.__delayTimer = QTimer(self)
self.__delayTimer.setSingleShot(True)
self.__delayTimer.setInterval(delay)
self.__delayTimer.timeout.connect(self.__delayedAction)
self.__minimized = False
self.__minSize = 0
self.__maxSize = 0
self.__bigSize = QSize()
self.splitter = None
self.splitterSizes = []
self.__hasFocus = False
# flag storing if this widget or any child has the focus
self.__autoHide = False
self.__tabBar.installEventFilter(self)
self.__orientation = E5SideBar.North
if orientation is None:
orientation = E5SideBar.North
self.setOrientation(orientation)
self.__tabBar.currentChanged[int].connect(
self.__stackedWidget.setCurrentIndex)
e5App().focusChanged[QWidget, QWidget].connect(self.__appFocusChanged)
self.__autoHideButton.toggled[bool].connect(self.__autoHideToggled)
def setSplitter(self, splitter):
"""
Public method to set the splitter managing the sidebar.
@param splitter reference to the splitter (QSplitter)
"""
self.splitter = splitter
self.splitter.splitterMoved.connect(self.__splitterMoved)
self.splitter.setChildrenCollapsible(False)
index = self.splitter.indexOf(self)
self.splitter.setCollapsible(index, False)
def __splitterMoved(self, pos, index):
"""
Private slot to react on splitter moves.
@param pos new position of the splitter handle (integer)
@param index index of the splitter handle (integer)
"""
if self.splitter:
#.........这里部分代码省略.........
示例9: AddDialog
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class AddDialog(QDialog):
worker = None
selected_show = None
results = []
def __init__(self, parent, worker, current_status, default=None):
QDialog.__init__(self, parent)
self.resize(950, 700)
self.setWindowTitle('Search/Add from Remote')
self.worker = worker
self.current_status = current_status
self.default = default
if default:
self.setWindowTitle('Search/Add from Remote for new show: %s' % default)
# Get available search methods and default to keyword search if not reported by the API
search_methods = self.worker.engine.mediainfo.get('search_methods', [utils.SEARCH_METHOD_KW])
layout = QVBoxLayout()
# Create top layout
top_layout = QHBoxLayout()
if utils.SEARCH_METHOD_KW in search_methods:
self.search_rad = QRadioButton('By keyword:')
self.search_rad.setChecked(True)
self.search_txt = QLineEdit()
self.search_txt.returnPressed.connect(self.s_search)
if default:
self.search_txt.setText(default)
self.search_btn = QPushButton('Search')
self.search_btn.clicked.connect(self.s_search)
top_layout.addWidget(self.search_rad)
top_layout.addWidget(self.search_txt)
else:
top_layout.setAlignment(QtCore.Qt.AlignRight)
top_layout.addWidget(self.search_btn)
# Create filter line
filters_layout = QHBoxLayout()
if utils.SEARCH_METHOD_SEASON in search_methods:
self.season_rad = QRadioButton('By season:')
self.season_combo = QComboBox()
self.season_combo.addItem('Winter', utils.SEASON_WINTER)
self.season_combo.addItem('Spring', utils.SEASON_SPRING)
self.season_combo.addItem('Summer', utils.SEASON_SUMMER)
self.season_combo.addItem('Fall', utils.SEASON_FALL)
self.season_year = QSpinBox()
today = date.today()
current_season = (today.month - 1) / 3
self.season_year.setRange(1900, today.year)
self.season_year.setValue(today.year)
self.season_combo.setCurrentIndex(current_season)
filters_layout.addWidget(self.season_rad)
filters_layout.addWidget(self.season_combo)
filters_layout.addWidget(self.season_year)
filters_layout.setAlignment(QtCore.Qt.AlignLeft)
filters_layout.addWidget(QSplitter())
else:
filters_layout.setAlignment(QtCore.Qt.AlignRight)
view_combo = QComboBox()
view_combo.addItem('Table view')
view_combo.addItem('Card view')
view_combo.currentIndexChanged.connect(self.s_change_view)
filters_layout.addWidget(view_combo)
# Create central content
self.contents = QStackedWidget()
# Set up views
tableview = AddTableDetailsView(None, self.worker)
tableview.changed.connect(self.s_selected)
self.contents.addWidget(tableview)
cardview = AddCardView(api_info=self.worker.engine.api_info)
cardview.changed.connect(self.s_selected)
cardview.activated.connect(self.s_show_details)
self.contents.addWidget(cardview)
# Use for testing
#self.set_results([{'id': 1, 'title': 'Hola', 'image': 'https://omaera.org/icon.png'}])
bottom_buttons = QDialogButtonBox()
bottom_buttons.addButton("Cancel", QDialogButtonBox.RejectRole)
self.add_btn = bottom_buttons.addButton("Add", QDialogButtonBox.AcceptRole)
self.add_btn.setEnabled(False)
bottom_buttons.accepted.connect(self.s_add)
bottom_buttons.rejected.connect(self.close)
# Finish layout
layout.addLayout(top_layout)
#.........这里部分代码省略.........
示例10: ParamModWgt
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class ParamModWgt(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.main_window = parent
self.buildRequiredTagsGB()
# Widgets
self.newParamBtn = QPushButton("New")
self.deleteParamBtn = QPushButton("Delete")
self.paramSaveAnnotBtn = QPushButton("Save")
buttonWidget = QWidget(self)
self.existingParamsGB = QGroupBox("Existing parameters", self)
self.paramListTblWdg = QTableView()
self.paramListModel = ParameterListModel(parent=self)
self.paramListTblWdg.setSelectionBehavior(QAbstractItemView.SelectRows)
self.paramListTblWdg.setSelectionMode(QAbstractItemView.SingleSelection)
self.paramListTblWdg.setModel(self.paramListModel)
self.paramListTblWdg.setColumnWidth(0, 150)
self.paramListTblWdg.setColumnWidth(1, 350)
self.relationWgt = ParamRelationWgt(parent)
self.newParamsGB = QGroupBox("Parameter details", self)
self.resultTypeCbo = QComboBox(self)
self.isExpProp = QCheckBox("is an experimental property", self)
self.resultTypeCbo.addItems(["point value", "function", "numerical trace"])
self.singleValueParamWgt = ParamValueWgt(parent)
self.functionParamWgt = ParamFunctionWgt(parent)
self.traceParamWgt = ParamTraceWgt(parent)
self.functionParamWgt.mainWgt = self
self.paramModStack = QStackedWidget(self)
self.paramModStack.addWidget(self.singleValueParamWgt)
self.paramModStack.addWidget(self.functionParamWgt)
self.paramModStack.addWidget(self.traceParamWgt)
# Signals
selectionModel = self.paramListTblWdg.selectionModel()
selectionModel.selectionChanged.connect(self.selectedParameterChanged)
self.newParamBtn.clicked.connect(self.newParameter)
self.deleteParamBtn.clicked.connect(self.deleteParameter)
self.paramSaveAnnotBtn.clicked.connect(self.saveParameter)
self.resultTypeCbo.currentIndexChanged.connect(self.paramModStack.setCurrentIndex)
self.singleValueParamWgt.paramTypeSelected.connect(self.newParamTypeSelected)
self.functionParamWgt.paramTypeSelected.connect(self.newParamTypeSelected)
self.traceParamWgt.paramTypeSelected.connect(self.newParamTypeSelected)
# Layout
buttonLayout = QVBoxLayout(buttonWidget)
buttonLayout.addWidget(self.paramSaveAnnotBtn)
buttonLayout.addWidget(self.deleteParamBtn)
buttonLayout.addWidget(self.newParamBtn)
existGrid = QHBoxLayout(self.existingParamsGB)
existGrid.addWidget(buttonWidget)
existGrid.addWidget(self.paramListTblWdg)
newGrid = QGridLayout(self.newParamsGB)
newGrid.addWidget(QLabel("Result type"), 0, 0)
newGrid.addWidget(self.resultTypeCbo, 0, 1)
newGrid.addWidget(self.isExpProp, 0, 2)
newGrid.addWidget(self.paramModStack, 1, 0, 1, 3)
newGrid.addWidget(self.relationWgt, 1, 3)
layout = QVBoxLayout(self)
self.rootLayout = QSplitter(Qt.Vertical, self)
self.rootLayout.setOrientation(Qt.Vertical)
self.rootLayout.addWidget(self.existingParamsGB)
self.rootLayout.addWidget(self.newParamsGB)
self.rootLayout.addWidget(self.requireTagGB)
layout.addWidget(self.rootLayout)
# Initial behavior
self.newParamBtn.setEnabled(True)
self.deleteParamBtn.setEnabled(False)
self.paramSaveAnnotBtn.setEnabled(False)
self.additionMode = False
self.newParamsGB.setEnabled(False)
def setRootLayoutSizes(self, sizes):
self.rootLayout.setSizes(sizes)
def viewParameter(self, parameter):
row = -1
for row, param in enumerate(self.paramListModel.parameterList):
if param.id == parameter.id:
break
assert(row > -1)
self.paramListTblWdg.selectRow(row)
#.........这里部分代码省略.........
示例11: VariantDataDialog
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
#.........这里部分代码省略.........
dataLayout.addWidget(taxLabel)
dataLayout.addStretch()
layout = QHBoxLayout(self)
layout.addLayout(dataLayout)
layout.addWidget(lineFrame)
layout.addWidget(self.buttonBox)
# connect actions
self.variantInput.currentIndexChanged.connect(self.variantChanged)
self.speciesInput.currentIndexChanged.connect(self.checkSpecies)
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
self.buttonBox.helpRequested.connect(self.help)
self.costCalculator.clicked.connect(self.costCalculation)
self.preparationCalculator.clicked.connect(self.preparationCalculation)
self.plantingCalculator.clicked.connect(self.plantingCalculation)
self.tendingCalculator.clicked.connect(self.tendingCalculation)
self.tubeWidget.countChanged.connect(self.updateCount)
self.fenceWidget.lengthChanged.connect(self.updateLength)
# update input fields
if self.item:
plant = self.item[TreeModel.PlantRole]
protection = self.item[TreeModel.ProtectionRole]
self.species = plant.species
# update input fields
self.variantInput.setCurrentIndex(protection.TYPE)
self.variantInput.setDisabled(True)
self.descriptionInput.setText(self.item[TreeModel.NameRole])
self.speciesInput.setCurrentIndex(plant.species)
self.costInput.setValue(plant.cost)
self.preparationInput.setValue(plant.preparation)
self.plantingInput.setValue(plant.planting)
self.tendingInput.setValue(plant.tending)
self.mortalityInput.setValue(plant.mortality * 100)
# update the protection group
self.protectionGroup.currentWidget().setValues(protection)
else:
self.variantInput.setCurrentIndex(self.last)
if self.index.isValid():
self.speciesInput.setCurrentIndex(self.index.data(TreeModel.SpeciesRole))
# check the species and show
# a warning, if necessary
self.checkSpecies()
# translate the graphical user interface
self.retranslateUi()
def updateCount(self, count):
# TODO
self.count = count
def updateLength(self, length):
# TODO
self.length = length
def retranslateUi(self):
示例12: EntryView
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class EntryView(BaseTransactionView):
def _setup(self):
self._setupUi()
self.etable = EntryTable(self.model.etable, view=self.tableView)
self.efbar = EntryFilterBar(model=self.model.filter_bar, view=self.filterBar)
self.bgraph = Chart(self.model.bargraph, view=self.barGraphView)
self.lgraph = Chart(self.model.balgraph, view=self.lineGraphView)
self._setupColumns() # Can only be done after the model has been connected
self.reconciliationButton.clicked.connect(self.model.toggle_reconciliation_mode)
def _setupUi(self):
self.resize(483, 423)
self.verticalLayout = QVBoxLayout(self)
self.verticalLayout.setSpacing(0)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(0)
self.filterBar = RadioBox(self)
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.filterBar.sizePolicy().hasHeightForWidth())
self.filterBar.setSizePolicy(sizePolicy)
self.horizontalLayout.addWidget(self.filterBar)
self.horizontalLayout.addItem(horizontalSpacer())
self.reconciliationButton = QPushButton(tr("Reconciliation"))
self.reconciliationButton.setCheckable(True)
self.horizontalLayout.addWidget(self.reconciliationButton)
self.verticalLayout.addLayout(self.horizontalLayout)
self.splitterView = QSplitter()
self.splitterView.setOrientation(Qt.Vertical)
self.splitterView.setChildrenCollapsible(False)
self.tableView = TableView(self)
self.tableView.setAcceptDrops(True)
self.tableView.setEditTriggers(QAbstractItemView.DoubleClicked|QAbstractItemView.EditKeyPressed)
self.tableView.setDragEnabled(True)
self.tableView.setDragDropMode(QAbstractItemView.InternalMove)
self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows)
self.tableView.setSortingEnabled(True)
self.tableView.horizontalHeader().setHighlightSections(False)
self.tableView.horizontalHeader().setMinimumSectionSize(18)
self.tableView.verticalHeader().setVisible(False)
self.tableView.verticalHeader().setDefaultSectionSize(18)
self.splitterView.addWidget(self.tableView)
self.graphView = QStackedWidget(self)
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.graphView.sizePolicy().hasHeightForWidth())
self.graphView.setSizePolicy(sizePolicy)
self.graphView.setMinimumSize(0, 200)
self.lineGraphView = LineGraphView()
self.graphView.addWidget(self.lineGraphView)
self.barGraphView = BarGraphView()
self.graphView.addWidget(self.barGraphView)
self.splitterView.addWidget(self.graphView)
self.graphView.setCurrentIndex(1)
self.splitterView.setStretchFactor(0, 1)
self.splitterView.setStretchFactor(1, 0)
self.verticalLayout.addWidget(self.splitterView)
def _setupColumns(self):
h = self.tableView.horizontalHeader()
h.setSectionsMovable(True) # column drag & drop reorder
# --- QWidget override
def setFocus(self):
self.etable.view.setFocus()
# --- Public
def fitViewsForPrint(self, viewPrinter):
hidden = self.model.mainwindow.hidden_areas
viewPrinter.fitTable(self.etable)
if PaneArea.BottomGraph not in hidden:
viewPrinter.fit(self.graphView.currentWidget(), 300, 150, expandH=True, expandV=True)
def restoreSubviewsSize(self):
graphHeight = self.model.graph_height_to_restore
if graphHeight:
splitterHeight = self.splitterView.height()
sizes = [splitterHeight-graphHeight, graphHeight]
self.splitterView.setSizes(sizes)
# --- model --> view
def refresh_reconciliation_button(self):
if self.model.can_toggle_reconciliation_mode:
self.reconciliationButton.setEnabled(True)
self.reconciliationButton.setChecked(self.model.reconciliation_mode)
else:
self.reconciliationButton.setEnabled(False)
self.reconciliationButton.setChecked(False)
def show_bar_graph(self):
self.graphView.setCurrentIndex(1)
def show_line_graph(self):
self.graphView.setCurrentIndex(0)
def update_visibility(self):
#.........这里部分代码省略.........
示例13: _ToolsDock
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
#.........这里部分代码省略.........
if not result:
return
index = result.data()
btn = self.__buttons[index]
visible = self.__buttons_visibility.get(btn, False)
self.__buttons_visibility[btn] = not visible
if visible:
btn.hide()
else:
btn.show()
def get_widget_index_by_instance(self, instance):
index = -1
for i, (obj, _) in self.__WIDGETS.items():
if instance == obj:
index = i
break
return index
def execute_file(self):
run_widget = IDE.get_service("run_widget")
index = self.get_widget_index_by_instance(run_widget)
self._show(index)
self.executeFile.emit()
def execute_project(self):
run_widget = IDE.get_service("run_widget")
index = self.get_widget_index_by_instance(run_widget)
self._show(index)
self.executeProject.emit()
def execute_selection(self):
run_widget = IDE.get_service("run_widget")
index = self.get_widget_index_by_instance(run_widget)
self._show(index)
self.executeSelection.emit()
def kill_application(self):
self.stopApplication.emit()
def add_widget(self, display_name, obj):
self._stack_widgets.addWidget(obj)
func = getattr(obj, "install_widget", None)
if isinstance(func, collections.Callable):
func()
def on_button_triggered(self):
# Get button index
button = self.sender()
index = self.__buttons.index(button)
if index == self.current_index() and self._is_current_visible():
self._hide()
else:
self._show(index)
def widget(self, index):
return self.__WIDGETS[index][0]
def _hide(self):
self.__current_widget.setVisible(False)
index = self.current_index()
self.__buttons[index].setChecked(False)
self.widget(index).setVisible(False)
self.hide()
def hide_widget(self, obj):
index = self.get_widget_index_by_instance(obj)
self.set_current_index(index)
self._hide()
def _show(self, index):
widget = self.widget(index)
self.__current_widget = widget
widget.setVisible(True)
widget.setFocus()
self.set_current_index(index)
self.show()
def set_current_index(self, index):
if self.__last_index != -1:
self.__buttons[self.__last_index].setChecked(False)
self.__buttons[index].setChecked(True)
if index != -1:
self._stack_widgets.setCurrentIndex(index)
widget = self.widget(index)
widget.setVisible(True)
self.__last_index = index
def current_index(self):
return self._stack_widgets.currentIndex()
def _is_current_visible(self):
return self.__current_widget and self.__current_widget.isVisible()
def _save_settings(self):
ninja_settings = IDE.ninja_settings()
visible_widget = self.current_index()
if not self.isVisible():
visible_widget = -1
ninja_settings.setValue("tools_dock/widgetVisible", visible_widget)
示例14: SettingsWidget
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class SettingsWidget(QWidget):
settings_changed = pyqtSignal()
def __init__(self, parent: QWidget):
super(SettingsWidget, self).__init__(parent, Qt.Window)
# config parser
self._cfg = configparser.ConfigParser()
# layouts
self._layout_main = QVBoxLayout()
self._layout_stacks = QHBoxLayout()
self._layout_okcancel = QHBoxLayout()
# sections list
self._sections_list = QListWidget(self)
self._sections_list.setSelectionMode(QAbstractItemView.SingleSelection)
self._sections_list.setSelectionBehavior(QAbstractItemView.SelectItems)
self._sections_list.setIconSize(QSize(32, 32))
self._sections_list.setViewMode(QListView.IconMode)
self._sections_list.setMaximumWidth(80)
self._sections_list.setGridSize(QSize(64, 64))
self._sections_list.setFlow(QListView.TopToBottom)
self._sections_list.setMovement(QListView.Static) # items cannot be moved by user
# network item
lwi = QListWidgetItem()
lwi.setText(self.tr("Network"))
lwi.setTextAlignment(Qt.AlignCenter)
lwi.setIcon(QIcon(":/i/settings_network_32.png"))
lwi.setData(Qt.UserRole, QVariant(0))
self._sections_list.addItem(lwi)
lwi.setSelected(True)
# misc item
lwi = QListWidgetItem()
lwi.setText(self.tr("Other"))
lwi.setTextAlignment(Qt.AlignCenter)
lwi.setIcon(QIcon(":/i/settings_32.png"))
lwi.setData(Qt.UserRole, QVariant(1))
self._sections_list.addItem(lwi)
# connections
self._sections_list.currentItemChanged.connect(self.on_section_current_item_changed)
self._layout_stacks.addWidget(self._sections_list)
# stacked widget
self._stack = QStackedWidget(self)
self._w_net = Settings_Net(self._stack)
self._w_misc = Settings_Misc(self._stack)
self._stack.addWidget(self._w_net)
self._stack.addWidget(self._w_misc)
self._stack.setCurrentIndex(0)
self._layout_stacks.addWidget(self._stack)
# ok cancel buttons
self._btn_ok = QPushButton(self)
self._btn_ok.setText(self.tr("Save"))
self._btn_ok.setIcon(QIcon(":/i/save.png"))
self._btn_cancel = QPushButton(self)
self._btn_cancel.setText(self.tr("Cancel"))
self._btn_cancel.setIcon(QIcon(":/i/cancel.png"))
self._layout_okcancel.addStretch()
self._layout_okcancel.addWidget(self._btn_ok)
self._layout_okcancel.addWidget(self._btn_cancel)
self._btn_ok.clicked.connect(self.on_ok)
self._btn_cancel.clicked.connect(self.on_cancel)
# final
self._layout_main.addLayout(self._layout_stacks)
self._layout_main.addLayout(self._layout_okcancel)
self.setLayout(self._layout_main)
self.setWindowTitle(self.tr("Settings"))
self.setWindowIcon(QIcon(":/i/settings_32.png"))
#
self.load_settings()
def load_settings(self):
self._cfg.read("config/net.ini", encoding="utf-8")
# init config of all child widgets
self._w_net.load_from_config(self._cfg)
self._w_misc.load_from_config(self._cfg)
def save_settings(self):
# read config from all child widgets
self._w_net.save_to_config(self._cfg)
self._w_misc.save_to_config(self._cfg)
# save to file
try:
with open("config/net.ini", "wt", encoding="utf-8") as fp:
self._cfg.write(fp)
fp.write("# proxy Tor example (local Tor browser):\n")
fp.write("# proxy = socks5://127.0.0.1:9050\n")
fp.write("# proxy I2P example:\n")
fp.write("# proxy = http://127.0.0.1:4444\n")
except IOError as e:
logger.error(str(e))
self.settings_changed.emit()
@pyqtSlot()
def on_ok(self):
self.save_settings()
self.hide()
def on_cancel(self):
self.hide()
@pyqtSlot(QListWidgetItem, QListWidgetItem)
#.........这里部分代码省略.........
示例15: Settings
# 需要导入模块: from PyQt5.QtWidgets import QStackedWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QStackedWidget import setCurrentIndex [as 别名]
class Settings(QDialog):
"""Window showing the Settings/settings.
Parameters
----------
parent : instance of QMainWindow
the main window
"""
def __init__(self, parent):
super().__init__(None, Qt.WindowSystemMenuHint | Qt.WindowTitleHint)
self.parent = parent
self.config = ConfigUtils(self.parent.update)
self.setWindowTitle('Settings')
self.create_settings()
def create_settings(self):
"""Create the widget, organized in two parts.
Notes
-----
When you add widgets in config, remember to update show_settings too
"""
bbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Apply |
QDialogButtonBox.Cancel)
self.idx_ok = bbox.button(QDialogButtonBox.Ok)
self.idx_apply = bbox.button(QDialogButtonBox.Apply)
self.idx_cancel = bbox.button(QDialogButtonBox.Cancel)
bbox.clicked.connect(self.button_clicked)
page_list = QListWidget()
page_list.setSpacing(1)
page_list.currentRowChanged.connect(self.change_widget)
pages = ['General', 'Overview', 'Signals', 'Channels', 'Spectrum',
'Notes', 'Video']
for one_page in pages:
page_list.addItem(one_page)
self.stacked = QStackedWidget()
self.stacked.addWidget(self.config)
self.stacked.addWidget(self.parent.overview.config)
self.stacked.addWidget(self.parent.traces.config)
self.stacked.addWidget(self.parent.channels.config)
self.stacked.addWidget(self.parent.spectrum.config)
self.stacked.addWidget(self.parent.notes.config)
self.stacked.addWidget(self.parent.video.config)
hsplitter = QSplitter()
hsplitter.addWidget(page_list)
hsplitter.addWidget(self.stacked)
btnlayout = QHBoxLayout()
btnlayout.addStretch(1)
btnlayout.addWidget(bbox)
vlayout = QVBoxLayout()
vlayout.addWidget(hsplitter)
vlayout.addLayout(btnlayout)
self.setLayout(vlayout)
def change_widget(self, new_row):
"""Change the widget on the right side.
Parameters
----------
new_row : int
index of the widgets
"""
self.stacked.setCurrentIndex(new_row)
def button_clicked(self, button):
"""Action when button was clicked.
Parameters
----------
button : instance of QPushButton
which button was pressed
"""
if button in (self.idx_ok, self.idx_apply):
# loop over widgets, to see if they were modified
for i_config in range(self.stacked.count()):
one_config = self.stacked.widget(i_config)
if one_config.modified:
lg.debug('Settings for ' + one_config.widget +
' were modified')
one_config.get_values()
if self.parent.info.dataset is not None:
one_config.update_widget()
one_config.modified = False
if button == self.idx_ok:
self.accept()
if button == self.idx_cancel:
self.reject()