QListWidget 排序
-
sortItems(Qt.SortOrder)
: 排序,有 Qt.SortOrder.DescendingOrder
降序和 Qt.SortOrder.AscendingOrder
升序。下面範例是使用升序,要注意雖然是數字,但型態是字串,所以他會用字典順序,也就是 ASCII 排序,比較第一個字。
from PySide6.QtWidgets import QApplication, QWidget, QListWidget, QVBoxLayout
from PySide6.QtCore import Qt
class Mywindow(QWidget):
def __init__(self):
super().__init__()
QList = QListWidget()
QList.addItems(["12", "57", "178","222"])
QList.sortItems(Qt.SortOrder.AscendingOrder) #排序
layout = QVBoxLayout()
layout.addWidget(QList)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = Mywindow()
window.show()
app.exec()
QListWidget 常用的功能
-
clear()
: 清空列表。
-
currentItem()
: 得到目前的元素,可以搭配 text()
顯示當前的字串等其他功能使用。下面範例是當選擇改變時,會觸發信號,然後顯示當前選擇的文字。
from PySide6.QtWidgets import QApplication, QWidget, QListWidget, QVBoxLayout , QListView
class Mywindow(QWidget):
def __init__(self):
super().__init__()
QList = QListWidget()
QList.addItems(["12", "57", "178","222"])
QList.currentItemChanged.connect(lambda: print(QList.currentItem().text()))
layout = QVBoxLayout()
layout.addWidget(QList)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = Mywindow()
window.show()
app.exec()
-
setText(str)
: 設置文字。
-
setFlow(QListView.Flow)
: 可以設定排列方法,要搭配要 QListView.Flow
使用,有 LeftToRight
左到右排列,或 TopToBottom
上到下排列。下面範例是左到右排列。
from PySide6.QtWidgets import QApplication, QWidget, QListWidget, QVBoxLayout , QListView
class Mywindow(QWidget):
def __init__(self):
super().__init__()
QList = QListWidget()
QList.addItems(["12", "57", "178","222"])
QList.setFlow(QListView.Flow.LeftToRight) #排列
layout = QVBoxLayout()
layout.addWidget(QList)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
window = Mywindow()
window.show()
app.exec()
配合菜單
- 配合
QAction
做菜單。範例是當點擊滑鼠右鍵,可以點選刪除,然後刪除當前選取的元素。
from PySide6.QtWidgets import QApplication, QWidget, QListWidget, QVBoxLayout
from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
class Mywindow(QWidget):
def __init__(self):
super().__init__()
self.QList = QListWidget()
self.QList.addItems(["apple pie", "apple", "banana"])
# 創建上下文菜單的 QAction
self.QList.setContextMenuPolicy(Qt.ContextMenuPolicy.ActionsContextMenu) #設定菜單
action = QAction("刪除", self)
self.QList.addAction(action)
action.triggered.connect(self.Delete)
#布局
layout = QVBoxLayout()
layout.addWidget(self.QList)
self.setLayout(layout)
def Delete(self) :
self.QList.takeItem(self.QList.currentRow())
if __name__ == "__main__":
app = QApplication([])
window = Mywindow()
window.show()
app.exec()
總結
功能 |
方法 |
排序 |
sortItems(Qt.SortOrder) |
有分成降序和升序。
功能 |
方法 |
降序 |
Qt.SortOrder.DescendingOrder |
升序 |
Qt.SortOrder.AscendingOrder |
功能 |
方法 |
清空列表 |
clear() |
取得當前文字 |
text() |
設置元素文字 |
setText(str) |
目前的元素 |
currentItem() |
排列方法 |
setFlow(QListView.Flow) |