本文整理汇总了Python中PyQt5.QtWidgets.QTreeWidget.setRootIsDecorated方法的典型用法代码示例。如果您正苦于以下问题:Python QTreeWidget.setRootIsDecorated方法的具体用法?Python QTreeWidget.setRootIsDecorated怎么用?Python QTreeWidget.setRootIsDecorated使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QTreeWidget
的用法示例。
在下文中一共展示了QTreeWidget.setRootIsDecorated方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: OtherPackagesPage
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
class OtherPackagesPage(QWidget):
""" The GUI for the other packages page of a project. """
# The page's label.
label = "Other Packages"
@property
def project(self):
""" The project property getter. """
return self._project
@project.setter
def project(self, value):
""" The project property setter. """
if self._project != value:
self._project = value
self._package_delegate.set_project(value)
self._update_page()
def __init__(self):
""" Initialise the page. """
super().__init__()
self._project = None
# Create the page's GUI.
layout = QHBoxLayout()
self._package_selector = QTreeWidget(
whatsThis="This shows a list of directories containing "
"additional Python packages which can be scanned when "
"selected. Double-click on a directory to edit or "
"remove it. Double-click below the last directory in "
"order to add a new one.")
self._package_selector.setHeaderLabel("Packages Directory")
self._package_selector.setEditTriggers(
QTreeWidget.DoubleClicked|QTreeWidget.SelectedClicked|
QTreeWidget.EditKeyPressed)
self._package_selector.setRootIsDecorated(False)
self._package_selector.currentItemChanged.connect(
self._package_selector_changed)
self._package_selector.itemChanged.connect(self._package_dir_changed)
self._package_delegate = FilenameEditorDelegate("Packages Directory",
directory=True)
self._package_selector.setItemDelegateForColumn(0,
self._package_delegate)
layout.addWidget(self._package_selector)
self._package_edit = _PackageDirectoryEditor()
self._package_edit.package_changed.connect(self._package_changed)
package_edit_gb = QGroupBox(self._package_edit.title)
package_edit_gb.setLayout(self._package_edit)
layout.addWidget(package_edit_gb)
self.setLayout(layout)
def _update_page(self):
""" Update the page using the current project. """
project = self.project
self._package_selector.clear()
for package in project.other_packages:
self._add_package_dir(package)
self._add_package_dir()
def _add_package_dir(self, package=None):
""" Add a QTreeWidgetItem that holds a package directory. """
if package is None:
package = QrcPackage()
name = ''
else:
name = package.name
itm = QTreeWidgetItem([name])
itm.setData(0, Qt.UserRole, package)
itm.setFlags(Qt.ItemIsSelectable|Qt.ItemIsEnabled|Qt.ItemNeverHasChildren|Qt.ItemIsEditable)
self._package_selector.addTopLevelItem(itm)
def _package_selector_changed(self, new, old):
""" Invoked when the user selects a package directory. """
if new is not None:
self._package_edit.configure(new.data(0, Qt.UserRole),
self.project)
def _package_dir_changed(self, itm, column):
""" Invoked when the user edits a package directory name. """
#.........这里部分代码省略.........
示例2: MiscTab
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
class MiscTab(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.name = self.tr("Misc")
self.markColorLabel = QLabel(self.tr("Default flag colors:"), self)
# TODO: enforce duplicate names avoidance
self.markColorWidget = QTreeWidget(self)
self.markColorWidget.setHeaderLabels(
(self.tr("Color"), self.tr("Name")))
self.markColorWidget.setRootIsDecorated(False)
self.markColorWidget.setSelectionBehavior(
QAbstractItemView.SelectRows)
# TODO: make this work correctly, top-level items only
# self.markColorWidget.setDragDropMode(QAbstractItemView.InternalMove)
self.addItemButton = QPushButton("+", self)
self.addItemButton.clicked.connect(self.addItem)
self.removeItemButton = QPushButton("−", self)
self.removeItemButton.clicked.connect(self.removeItem)
self.loadRecentFileBox = QCheckBox(
self.tr("Load most recent file on start"), self)
layout = QGridLayout(self)
l = 0
layout.addWidget(self.markColorLabel, l, 0, 1, 3)
l += 1
layout.addWidget(self.markColorWidget, l, 0, 1, 3)
l += 1
layout.addWidget(self.addItemButton, l, 0)
layout.addWidget(self.removeItemButton, l, 1)
l += 1
layout.addWidget(self.loadRecentFileBox, l, 0, 1, 3)
self.setLayout(layout)
self.readSettings()
def addItem(self):
def mangleNewName():
name = self.tr("New")
index = 0
while self.markColorWidget.findItems(name, Qt.MatchExactly, 1):
index += 1
name = "{0} ({1})".format(name, index)
return name
# TODO: not DRY with ctor
item = QTreeWidgetItem(self.markColorWidget)
item.setFlags(item.flags() | Qt.ItemIsEditable)
widget = ColorVignette(self)
widget.setColor(QColor(Qt.white))
widget.setMargins(2, 2, 2, 2)
widget.setMayClearColor(False)
self.markColorWidget.setItemWidget(item, 0, widget)
item.setText(1, mangleNewName())
self.markColorWidget.setCurrentItem(item)
self.markColorWidget.editItem(item, 1)
self.removeItemButton.setEnabled(True)
def removeItem(self):
i = self.markColorWidget.selectionModel().currentIndex().row()
self.markColorWidget.takeTopLevelItem(i)
if not self.markColorWidget.topLevelItemCount():
self.removeItemButton.setEnabled(False)
def readSettings(self):
entries = settings.readMarkColors()
for name, color in entries.items():
item = QTreeWidgetItem(self.markColorWidget)
item.setFlags(item.flags() | Qt.ItemIsEditable)
widget = ColorVignette(self)
widget.setColor(color)
widget.setMargins(2, 2, 2, 2)
widget.setMayClearColor(False)
self.markColorWidget.setItemWidget(item, 0, widget)
item.setText(1, name)
if not len(entries):
self.removeItemButton.setEnabled(False)
loadRecentFile = settings.loadRecentFile()
self.loadRecentFileBox.setChecked(loadRecentFile)
def writeSettings(self):
markColors = OrderedDict()
for i in range(self.markColorWidget.topLevelItemCount()):
item = self.markColorWidget.topLevelItem(i)
name = item.text(1)
color = self.markColorWidget.itemWidget(item, 0).color()
markColors[name] = color
settings.writeMarkColors(markColors)
loadRecentFile = self.loadRecentFileBox.isChecked()
settings.setLoadRecentFile(loadRecentFile)
示例3: OtherExtensionModulesPage
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
class OtherExtensionModulesPage(QWidget):
""" The GUI for the other extension modules page of a project. """
# The page's label.
label = "Other Extension Modules"
@property
def project(self):
""" The project property getter. """
return self._project
@project.setter
def project(self, value):
""" The project property setter. """
if self._project != value:
self._project = value
self._extension_modules_delegate.set_project(value)
self._update_page()
def __init__(self):
""" Initialise the page. """
super().__init__()
self._project = None
# Create the page's GUI.
layout = QVBoxLayout()
self._extension_modules_edit = QTreeWidget(
whatsThis="This shows a list of additional compiled "
"extension modules to be linked with the application. "
"<b>Name</b> should be the full (dot separated) "
"package name of the extension module. <b>LIBS</b> "
"should be the value of the corresponding "
"<tt>qmake</tt> variable needed to link the extension "
"module. Double-click on an entry to edit or remove "
"it. Double-click below the last entry in order to "
"add a new one. Values may be prefixed by a platform "
"specific <tt>qmake</tt> scope.")
self._extension_modules_edit.setHeaderLabels(["Name", "LIBS"])
self._extension_modules_edit.setEditTriggers(
QTreeWidget.DoubleClicked|QTreeWidget.SelectedClicked|
QTreeWidget.EditKeyPressed)
self._extension_modules_edit.setRootIsDecorated(False)
self._extension_modules_edit.itemChanged.connect(
self._extension_module_changed)
self._extension_modules_delegate = FilenameEditorDelegate(
"Extension Module Directory", directory=True)
self._extension_modules_edit.setItemDelegateForColumn(1,
self._extension_modules_delegate)
layout.addWidget(self._extension_modules_edit)
self.setLayout(layout)
def _update_page(self):
""" Update the page using the current project. """
project = self.project
# Set the extension modules.
self._extension_modules_edit.clear()
for extension_module in project.other_extension_modules:
self._add_extension_module_item(extension_module)
# Add one to be edited to create a new entry.
self._add_extension_module_item()
def _add_extension_module_item(self, extension_module=None):
""" Add a QTreeWidgetItem that holds an exclusion. """
if extension_module is not None:
name = extension_module.name
libs = extension_module.libs
else:
name = libs = ''
itm = QTreeWidgetItem([name, libs])
itm.setFlags(
Qt.ItemIsSelectable|Qt.ItemIsEditable|Qt.ItemIsEnabled|
Qt.ItemNeverHasChildren)
self._extension_modules_edit.addTopLevelItem(itm)
def _extension_module_changed(self, itm, value):
""" Invoked when an extension module has changed. """
project = self.project
em_edit = self._extension_modules_edit
new_name = itm.data(0, Qt.DisplayRole).strip()
new_libs = itm.data(1, Qt.DisplayRole).strip()
itm_index = em_edit.indexOfTopLevelItem(itm)
#.........这里部分代码省略.........
示例4: ImperiumWidget
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
class ImperiumWidget(QWidget):
def __init__(self, parent=None):
super(ImperiumWidget, self).__init__(parent)
# objects, sub-windows
self._world = XNovaWorld_instance()
self._layout = None
self._layout_topbuttons = None
self._tree = None
self._btn_reload = None
# initialization
self.setup_ui()
def setup_ui(self):
self._layout = QVBoxLayout()
self.setLayout(self._layout)
# create layout for top line of buttons
self._layout_topbuttons = QHBoxLayout()
self._layout.addLayout(self._layout_topbuttons)
# create reload button
self._btn_reload = QPushButton(self.tr('Refresh imperium'), self)
self._btn_reload.setIcon(QIcon(':i/reload.png'))
self._btn_reload.clicked.connect(self.on_btn_refresh_imperium)
self._layout_topbuttons.addWidget(self._btn_reload)
# finalize top buttons layout
self._layout_topbuttons.addStretch()
# create tree
self._tree = QTreeWidget(self)
self._tree.setAnimated(False)
self._tree.setExpandsOnDoubleClick(True)
self._tree.setHeaderHidden(False)
self._tree.setItemsExpandable(True)
self._tree.setRootIsDecorated(True)
self._tree.setSortingEnabled(False)
self._tree.setColumnCount(1)
self._tree.setHeaderLabels(['None'])
self._layout.addWidget(self._tree)
self._tree.show()
# called once after full world load
def update_planets(self):
def additem_helper(item_texts, twi_parent=None, align_flag=0):
# align_flag = Qt::AlignLeft / Qt::AlignRight / Qt::AlignHCenter
if align_flag == 0:
align_flag = Qt.AlignHCenter | Qt.AlignVCenter
twi = QTreeWidgetItem(item_texts)
for it_col in range(len(item_texts)):
if it_col > 0:
# void QTreeWidgetItem::setTextAlignment(int column, int alignment)
twi.setTextAlignment(it_col, align_flag)
if twi_parent is None:
self._tree.addTopLevelItem(twi)
else:
twi_parent.addChild(twi)
return True
self._tree.clear() # clear the tree first
planets = self._world.get_planets() # get planets from the world
#
# setup header and its labels
header_labels = ['-']
for i in range(len(planets)):
header_labels.append(planets[i].name)
header_labels.append(self.tr('Total')) # last column - totals
self._tree.setHeaderLabels(header_labels)
# alignment of text in header labels
self._tree.header().setDefaultAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
# default column widths
for i in range(len(planets)):
if i < 1:
self._tree.setColumnWidth(i, 150)
else:
self._tree.setColumnWidth(i, 75)
#
# planets names
item_strings = [self.tr('Name')]
for pl in planets:
item_strings.append(pl.name)
additem_helper(item_strings)
#
# planets coords
item_strings = [self.tr('Coords')]
for pl in planets:
item_strings.append('[{0}:{1}:{2}]'.format(pl.coords.galaxy, pl.coords.system, pl.coords.position))
additem_helper(item_strings)
#
# planets fields
item_strings = [self.tr('Fields')]
total_busy = 0
total_fields = 0
for pl in planets:
total_busy += pl.fields_busy
total_fields = pl.fields_total
item_strings.append('{0} / {1}'.format(pl.fields_busy, pl.fields_total))
item_strings.append('{0} / {1}'.format(total_busy, total_fields))
additem_helper(item_strings)
#
# resources
res_root = QTreeWidgetItem([self.tr('Resources')])
item_strings = [self.tr('Metal')]
total_res = 0
#.........这里部分代码省略.........
示例5: QrcPackageEditor
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
class QrcPackageEditor(QGridLayout):
""" A resource file system package editor. Note that this is a QLayout and
not a QWidget.
"""
# Emitted when the package has changed.
package_changed = pyqtSignal()
def __init__(self, show_root=False, scan="Scan", scan_whats_this='', whats_this=''):
""" Initialise the editor. """
super().__init__()
self.package = None
self.project = None
self._show_root = show_root
self._package_edit = QTreeWidget(whatsThis=whats_this)
self._package_edit.header().hide()
self._package_edit.itemChanged.connect(self._package_changed)
self.addWidget(self._package_edit, 0, 0, 3, 1)
self._scan_button = QPushButton(scan, whatsThis=scan_whats_this,
clicked=self._scan, enabled=False)
self.addWidget(self._scan_button, 0, 1)
self._remove_button = QPushButton("Remove all",
whatsThis="Remove all of the scanned directories and files.",
clicked=self._remove_all, enabled=False)
self.addWidget(self._remove_button, 0, 2)
self._include_button = QPushButton("Include all",
whatsThis="Select all of the scanned directories and files.",
clicked=self._include_all, enabled=False)
self.addWidget(self._include_button, 1, 1)
self._exclude_button = QPushButton("Exclude all",
whatsThis="Deselect all of the scanned directories and files.",
clicked=self._exclude_all, enabled=False)
self.addWidget(self._exclude_button, 1, 2)
self._exclusions_edit = QTreeWidget(
whatsThis="Any directory or file that matches any of the "
"these patterns will be automatically ignored when "
"scanning. Double-click on a pattern to edit or remove "
"it. Double-click below the last pattern in order to "
"add a new one.")
self._exclusions_edit.setHeaderLabel("Exclusions")
self._exclusions_edit.setEditTriggers(
QTreeWidget.DoubleClicked|QTreeWidget.SelectedClicked|
QTreeWidget.EditKeyPressed)
self._exclusions_edit.setRootIsDecorated(False)
self._exclusions_edit.itemChanged.connect(self._exclusion_changed)
self.addWidget(self._exclusions_edit, 2, 1, 1, 2)
def configure(self, package, project):
""" Configure the editor with the contents of the given package and
project.
"""
# Save the configuration.
self.package = package
self.project = project
# Set the package itself.
self._visualise()
# Set the exclusions.
self._exclusions_edit.clear()
for exclude in package.exclusions:
self._add_exclusion_item(exclude)
# Add one to be edited to create a new entry.
self._add_exclusion_item()
self._scan_button.setEnabled(package is not None)
def get_root_dir(self):
""" Return the root directory to scan, or '' if there was an error or
the user cancelled.
"""
raise NotImplementedError
def filter(self, name):
""" See if a scanned name should be discarded. """
# Include everything by default.
return False
def required(self, name):
""" See if a scanned name is required. """
# Nothing is required by default.
return False
def _add_exclusion_item(self, exclude=''):
#.........这里部分代码省略.........
示例6: InspectorWindow
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
#.........这里部分代码省略.........
transformLayout.addWidget(moveXYBox, l, 5)
l += 1
transformLayout.addWidget(scaleButton, l, 0)
transformLayout.addWidget(scaleXLabel, l, 1)
transformLayout.addWidget(self.scaleXEdit, l, 2)
transformLayout.addWidget(scaleYLabel, l, 3)
transformLayout.addWidget(self.scaleYEdit, l, 4)
transformLayout.addWidget(scaleXYBox, l, 5)
transformGroup.setLayout(transformLayout)
l += 1
transformLayout.addWidget(rotateButton, l, 0)
transformLayout.addWidget(rotateLabel, l, 1)
transformLayout.addWidget(self.rotateEdit, l, 2)
transformGroup.setLayout(transformLayout)
l += 1
transformLayout.addWidget(skewButton, l, 0)
transformLayout.addWidget(skewXLabel, l, 1)
transformLayout.addWidget(self.skewXEdit, l, 2)
transformLayout.addWidget(skewYLabel, l, 3)
transformLayout.addWidget(self.skewYEdit, l, 4)
transformLayout.addWidget(skewXYBox, l, 5)
transformGroup.setLayout(transformLayout)
l += 1
transformLayout.addWidget(snapButton, l, 0)
transformLayout.addWidget(self.snapEdit, l, 2)
transformGroup.setLayout(transformLayout)
layerSetGroup = AccordionBox(self.tr("Layers"), self)
layerSetLayout = QVBoxLayout(self)
self.layerSetWidget = QTreeWidget(self)
self.layerSetWidget.setHeaderLabels(
(self.tr("Layer Name"), self.tr("Color")))
self.layerSetWidget.setRootIsDecorated(False)
self.layerSetWidget.setSelectionBehavior(QAbstractItemView.SelectRows)
# TODO: make this work correctly, top-level items only
# self.layerSetWidget.setDragDropMode(QAbstractItemView.InternalMove)
layerSetLayout.addWidget(self.layerSetWidget)
layerSetGroup.setLayout(layerSetLayout)
spacer = QWidget()
spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
mainLayout = QVBoxLayout()
mainLayout.addWidget(glyphGroup)
mainLayout.addWidget(transformGroup)
mainLayout.addWidget(layerSetGroup)
mainLayout.addWidget(spacer)
self.setLayout(mainLayout)
self.resize(200, self.height())
# -------------
# Notifications
# -------------
def _unsubscribeFromGlyph(self):
glyph = self._glyph
if glyph is not None:
glyph.removeObserver(self, "Glyph.Changed")
def _subscribeToGlyph(self, glyph):
if glyph is not None:
glyph.addObserver(
self, "_updateGlyphAttributes", "Glyph.Changed")
示例7: Ui_Ucics
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
#.........这里部分代码省略.........
# ------------添加到布局
toolLayout.addWidget(self.qzoneButton, 0, Qt.AlignLeft)
toolLayout.addWidget(self.skinButton, 1, Qt.AlignLeft)
# --------添加到布局
headInfoLayout.addWidget(self.nameLabel)
headInfoLayout.addWidget(self.moodEdit)
headInfoLayout.addWidget(self.toolWidget)
# ----天气
self.weatherLabel = QLabel(self.headWidget)
self.weatherLabel.setMinimumWidth(60)
self.weatherLabel.setMaximumWidth(60)
self.weatherLabel.setCursor(QCursor(Qt.PointingHandCursor))
self.weatherLabel.setObjectName("weatherLabel")
# ----添加到布局中
headLayout.addWidget(self.headLabel, 0, Qt.AlignLeft)
headLayout.addWidget(self.headInfoWidget, 0, Qt.AlignCenter)
headLayout.addWidget(self.weatherLabel, 0, Qt.AlignRight)
# 搜索输入框
self.searchEdit = LineEdit(self.bgWidget)
self.searchEdit.setFrame(False)
# self.searchEdit.setClearButtonEnabled(True)
self.searchEdit.setObjectName("searchEdit")
# tab
self.tabWidget = QTabWidget(self.bgWidget)
self.tabWidget.setUsesScrollButtons(False) # 取消两个切换按钮
self.tabWidget.setDocumentMode(True) # 取消边框
self.tabWidget.setObjectName("tabWidget")
# --分组
self.tabGroup = QWidget(self.tabWidget)
self.tabGroup.setObjectName("tabGroup")
# ----分组布局
groupVerticalLayout = QVBoxLayout(self.tabGroup)
groupVerticalLayout.setSpacing(0)
groupVerticalLayout.setContentsMargins(0, 0, 0, 0)
groupVerticalLayout.setObjectName("groupVerticalLayout")
# ------分组list控件
self.groupTreeWidget = QTreeWidget(self.tabGroup)
self.groupTreeWidget.setFrameShape(QFrame.NoFrame)
self.groupTreeWidget.setFrameStyle(QFrame.NoFrame)
self.groupTreeWidget.setLineWidth(0)
self.groupTreeWidget.setIndentation(0)
self.groupTreeWidget.setRootIsDecorated(False)
self.groupTreeWidget.setExpandsOnDoubleClick(False)
self.groupTreeWidget.header().setVisible(False)
self.groupTreeWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.groupTreeWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.groupTreeWidget.setObjectName("groupTreeWidget")
# ----添加到布局
groupVerticalLayout.addWidget(self.groupTreeWidget)
# --历史
self.tabHistory = QWidget(self.tabWidget)
self.tabHistory.setObjectName("tabHistory")
# ----历史布局
historyVerticalLayout = QVBoxLayout(self.tabHistory)
historyVerticalLayout.setSpacing(0)
historyVerticalLayout.setContentsMargins(0, 0, 0, 0)
historyVerticalLayout.setObjectName("historyVerticalLayout")
# ------历史list控件
self.historyTreeWidget = QTreeWidget(self.tabHistory)
self.historyTreeWidget.setFrameShape(QFrame.NoFrame)
self.historyTreeWidget.setFrameStyle(QFrame.NoFrame)
self.historyTreeWidget.setLineWidth(0)
self.historyTreeWidget.setIndentation(0)
self.historyTreeWidget.setRootIsDecorated(False)
self.historyTreeWidget.setExpandsOnDoubleClick(False)
self.historyTreeWidget.header().setVisible(False)
self.historyTreeWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.historyTreeWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.historyTreeWidget.setObjectName("historyTreeWidget")
# ----添加到布局
historyVerticalLayout.addWidget(self.historyTreeWidget)
# 添加到tab中
self.tabWidget.addTab(self.tabGroup, "")
self.tabWidget.addTab(self.tabHistory, "")
# 整体布局
verticalLayout = QVBoxLayout(self.bgWidget)
verticalLayout.setSpacing(0)
verticalLayout.setContentsMargins(0, 0, 0, 0)
verticalLayout.setObjectName("verticalLayout")
verticalLayout.addWidget(self.topWidget)
verticalLayout.addWidget(self.headWidget)
verticalLayout.addWidget(self.searchEdit)
verticalLayout.addWidget(self.tabWidget)
# bg
layout = QVBoxLayout(Ucics)
layout.setSpacing(0)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(self.bgWidget)
# 初始化一些设置
_translate = QCoreApplication.translate
Ucics.setWindowTitle(_translate("Ucics", "UCICS"))
self.tabWidget.setCurrentIndex(0)
self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.tabGroup), _translate("tabGroup", "分组"))
self.tabWidget.setTabToolTip(self.tabWidget.indexOf(self.tabHistory), _translate("tabHistory", "历史"))
QMetaObject.connectSlotsByName(Ucics)
示例8: Shortcuts
# 需要导入模块: from PyQt5.QtWidgets import QTreeWidget [as 别名]
# 或者: from PyQt5.QtWidgets.QTreeWidget import setRootIsDecorated [as 别名]
class Shortcuts(preferences.Page):
def __init__(self, dialog):
super(Shortcuts, self).__init__(dialog)
layout = QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
self.setLayout(layout)
self.scheme = SchemeSelector(self)
layout.addWidget(self.scheme)
self.searchEntry = LineEdit()
self.searchEntry.setPlaceholderText(_("Search..."))
layout.addWidget(self.searchEntry)
self.tree = QTreeWidget(self)
self.tree.setHeaderLabels([_("Command"), _("Shortcut")])
self.tree.setRootIsDecorated(False)
self.tree.setColumnCount(2)
self.tree.setAllColumnsShowFocus(True)
self.tree.setAnimated(True)
layout.addWidget(self.tree)
self.edit = QPushButton(icons.get("preferences-desktop-keyboard-shortcuts"), '')
layout.addWidget(self.edit)
# signals
self.searchEntry.textChanged.connect(self.updateFilter)
self.scheme.currentChanged.connect(self.slotSchemeChanged)
self.scheme.changed.connect(self.changed)
self.tree.currentItemChanged.connect(self.slotCurrentItemChanged)
self.tree.itemDoubleClicked.connect(self.editCurrentItem)
self.edit.clicked.connect(self.editCurrentItem)
# make a dict of all actions with the actions as key and the names as
# value, with the collection prepended (for loading/saving)
win = dialog.parent()
allactions = {}
for collection in actioncollectionmanager.manager(win).actionCollections():
for name, action in collection.actions().items():
allactions[action] = (collection, name)
# keep a list of actions not in the menu structure
left = list(allactions.keys())
def add_actions(menuitem, actions):
"""Add actions to a QTreeWidgetItem."""
for a in actions:
if a.menu():
item = build_menu_item(a)
if item.childCount():
menuitem.addChild(item)
elif a in left:
left.remove(a)
menuitem.addChild(ShortcutItem(a, *allactions[a]))
menuitem.setFlags(Qt.ItemIsEnabled) # disable selection
def build_menu_item(action):
"""Return a QTreeWidgetItem with children for all the actions in the submenu."""
menuitem = QTreeWidgetItem()
text = qutil.removeAccelerator(action.text())
menuitem.setText(0, _("Menu {name}").format(name=text))
add_actions(menuitem, action.menu().actions())
return menuitem
# present the actions nicely ordered as in the menus
for a in win.menuBar().actions():
menuitem = build_menu_item(a)
if menuitem.childCount():
self.tree.addTopLevelItem(menuitem)
# sort leftover actions
left.sort(key=lambda i: i.text())
# show actions that are left, grouped by collection
titlegroups = {}
for a in left[:]: # copy
collection, name = allactions[a]
if collection.title():
titlegroups.setdefault(collection.title(), []).append(a)
left.remove(a)
for title in sorted(titlegroups):
item = QTreeWidgetItem(["{0}:".format(title)])
for a in titlegroups[title]:
item.addChild(ShortcutItem(a, *allactions[a]))
self.tree.addTopLevelItem(item)
item.setFlags(Qt.ItemIsEnabled) # disable selection
# show other actions that were not in the menus
item = QTreeWidgetItem([_("Other commands:")])
for a in left:
if a.text() and not a.menu():
item.addChild(ShortcutItem(a, *allactions[a]))
if item.childCount():
self.tree.addTopLevelItem(item)
item.setFlags(Qt.ItemIsEnabled) # disable selection
self.tree.expandAll()
item = self.tree.topLevelItem(0).child(0)
if _lastaction:
# find the previously selected item
#.........这里部分代码省略.........