Всем доброе утро! Кто-нибудь знает, можно ли (и как) в PyQt сделать виджет как на скриншоте?
Он похож на чекбокс, но можно выбирать сразу несколько элементов, не нажимая на каждый отдельно, а просто проведя по ним.
Всем доброе утро! Кто-нибудь знает, можно ли (и как) в PyQt сделать виджет как на скриншоте?
Он похож на чекбокс, но можно выбирать сразу несколько элементов, не нажимая на каждый отдельно, а просто проведя по ним.
Не вижу тут чекбоксов.
Это скорее всего QListWidget
/ QListView
с одним из режимов выделения нескольких элементов. https://doc.qt.io/qt-5/qabstractitemview.html#SelectionMode-enum
Да, это то, что я имел в виду, спасибо большое
Прикрепляю код, если кому-то понадобится:
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QWidget, QLineEdit, QPushButton
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QSize
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(QtCore.QRect(300,300,500,500))
self.list=QtWidgets.QListWidget(self)
self.list.setGeometry((QtCore.QRect(10,10,100,100)))
self.list.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
for elm in range(10):
self.list.addItem(str(elm))
self.list.currentItemChanged.connect(self.showItem)
self.lineEdit=QLineEdit(self)
self.lineEdit.setGeometry(QtCore.QRect(10,130,100,15))
def showItem(self):
self.lineEdit.setText('')
items=self.list.selectedItems()
s=''
for item in items:
s+=item.text()+' '
self.lineEdit.setText(s)
#Ошибки
def log_uncaught_exceptions(ex_cls, ex, tb):
text = '{}: {}:\n'.format(ex_cls.__name__, ex)
text += ''.join(traceback.format_tb(tb))
print(text)
QtWidgets.QMessageBox.critical(None, 'Error', text)
sys.exit()
if __name__=='__main__':
sys.excepthook = log_uncaught_exceptions
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec())