- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用户可以通过在文本输入中输入文本并按键盘上的 Enter 键,将新团队名称附加到列表中。
如何让它在添加到列表后选择该项目?请记住,每次添加新项目时,我希望首先按字母顺序重新排序列表。我知道如何按字母顺序排序,我只是不确定在代码中放置它的位置。
下面的代码中使用此片段按字母顺序排序...
# sort list by attribute name
teamList.sort(key=lambda x: x._name, reverse=False)
该代码包含一个 Team 类。这是代码...
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Info goes here...
"""
import sys
from PySide import QtGui, QtCore
# Variables
# ------------------------------------------------------------------------------
teamList = []
# Classes
# ------------------------------------------------------------------------------
"""
Base class of team which contains 2 properties
name - name of team
members - list of team member names
"""
class Team:
"""
One line description...
other info....
"""
def __init__(self, name, members=None):
self._name = name
if members==None:
self._members = []
@property
def name(self, value):
# add type validation lines here
self._name = value
@property
def members(self, value):
# add type validation lines here
self._members = value
# Base widget widget
# ------------------------------------------------------------------------------
"""
Base widget which contains
label - describes widget
textedit - input field for appending items to list
listview - displays the list of items teams or members
"""
class NameListWidget(QtGui.QWidget):
def __init__(self, title=None):
super(NameListWidget, self).__init__()
self.initUI()
if title!=None:
self.listLabel.setText(title)
def initUI(self):
# formatting
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("Input List")
# widgets
self.listLabel = QtGui.QLabel("Label")
self.nameInput = QtGui.QLineEdit()
self.nameList = QtGui.QListWidget()
# signals
self.nameInput.returnPressed.connect(self.pressed_return)
# layout
self.mainLayout = QtGui.QVBoxLayout(self)
self.mainLayout.setContentsMargins(0,0,0,0)
self.mainLayout.addWidget(self.listLabel)
self.mainLayout.addWidget(self.nameInput)
self.mainLayout.addWidget(self.nameList)
self.show()
def pressed_return(self):
txt = self.nameInput.text()
# remove leading and trailing whitespaces
txt = txt.strip()
# replace all remaining spaces with underscores
txt = txt.replace (" ", "_")
if (len(txt) >= 1):
self.nameList.addItem(txt)
self.nameInput.clear()
# Main widget
# ------------------------------------------------------------------------------
"""
Main team widget contains two instances of the nameList widget
left widget - contains a list of the team names
right widget - contains list of members names for the selected team
"""
class TeamsWidget(QtGui.QWidget):
def __init__(self):
super(TeamsWidget, self).__init__()
self.initUI()
def initUI(self):
# formatting
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle("Teams")
# widgets
self.teamsListWidget = NameListWidget("Teams")
# layout
self.mainLayout = QtGui.QHBoxLayout(self)
self.mainLayout.addWidget(self.teamsListWidget)
self.show()
self.populateUI()
def populateUI(self):
A = Team("Zebras")
B = Team("Donuts")
C = Team("Characters")
D = Team("50")
teamList.append(A)
teamList.append(B)
teamList.append(C)
teamList.append(D)
# sort list by attribute name
teamList.sort(key=lambda x: x._name, reverse=False)
self.teamsListWidget.nameList.clear()
for t in teamList:
self.teamsListWidget.nameList.addItem(t._name)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ex = TeamsWidget()
sys.exit(app.exec_())
最佳答案
以下是如何从最后输入的文本中选择项目的示例:
def pressed_return(self):
txt = self.nameInput.text()
# remove leading and trailing whitespaces
txt = txt.strip()
# replace all remaining spaces with underscores
txt = txt.replace (" ", "_")
if (len(txt) >= 1):
self.nameList.addItem(txt)
self.nameInput.clear()
# EDITS HERE
items = [self.nameList.item(i).text() for i in range( self.nameList.count() ) ] # Get text of all items
if txt in items: # Check if text is in list
index = items.index(txt) # Get text's index
self.nameList.item(index).setSelected(True) # Select item
这个想法是,它将获取每行文本的列表,获取新项目的行,然后选择它。如果您希望它执行得更快,您可以在添加项目时保存项目的文本以跟踪它们。这样,您就不需要每次添加新项目时都从表中获取它。现在,如果您添加列表中已存在的文本,则此操作将会失败,因此您可能需要对此进行条件检查。
您必须重新排序脚本,以便在向其中添加新项目时它会对项目重新排序(而不是现在在 populateUI
中)。
关于python - 在Python中添加后选择pyside listwidget项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435638/
我有一个方法可以删除 QListWidget 上的文件列表: void MainWindow::ProvideContextMenu(const QPoint &pos) { QPoint i
在学习 PyQt5 时,我在 ListWidget 小部件(以及所有其他小部件)中发现了一个小问题(可能是一个错误) ListWidget 有一个重载的 addItem 方法:(代码在 C++ 中,但
如何从 QListWidget 中删除选定的项目? 我试过写下面的代码,但是没有用。 QList items = ui->listWidget->selectedItems(); foreach(QL
ListWidget列表框组件,该组件与TreeWidget有些相似,区别在于TreeWidget可以实现嵌套以及多字段结构,而ListWidget组件则只能实现单字段结构,ListWidget组件
我有一个相当简单的 PyQt 问题。 (Python 3.4、PyQt 4.11.3、Qt 4.8.5)我使用 Qt Designer (Ui_Dialog) 构建了一个非常简单的对话框。该对象有一个
我试图只点击列表小部件中项目列表中的一个项目。 我在我的 UI 中右键单击并转到插槽: void main::listWidget_itemClicked(QListWidgetItem* item)
在使用 QListWidget 和其他“列表”小部件之后,我终于找到了一个似乎是存储和检索列表的 Item 类(QListWidgetItem)的简单解决方案。我向自己介绍的问题是我认为 QListW
我正在尝试使用 Python 向 PyQt4 中的列表小部件中的项目添加右键单击功能。我喜欢一个弹出式上下文菜单来显示它有按钮,点击时应该执行一些功能。 如何在右键单击每个项目时弹出上下文菜单? 最佳
在我的项目中,我有一个listWidget。当用户单击列表中的项目时,它会加载: void BlockSelect::on_blockList_clicked(const QModelIndex &i
ListWidget 中有 5 个项目。按下按钮打印当前项目及其索引。似乎应该有足够的信息来从 ListWidget 中删除/删除该项目。 问题:如何从 ListWidget 中删除当前选定的列表项?
我有一个问题,我不知道如何从选定的目录中过滤图像。我通常使用 directory.setNameFilters({"*.png", "*.jpg"}); 但在这种情况下我不能使用它,因为我需要在 列表
如何在每次迭代时更新 listwidget ?它在 500 次迭代后更新 listwidget。pyqt4、python3.7 def input_val(self): for i in ra
我是一名优秀的程序员,十分优秀!