Python PyQt Изменить макет комбинированного списка - PullRequest
0 голосов
/ 04 декабря 2018

Есть ли способ (или, может быть, другой виджет, который я могу использовать (я не смог его найти), чтобы я мог сделать свой комбинированный список похожим на комбинированный список на картинке?

На рисунке показано, чтоЯ хочу поставить с шрифтом. Я хотел бы, чтобы варианты были в моем списке шрифта. enter image description here

Я хотел бы видеть все опции (если есть много дляиметь возможность прокручивать) и выбрать один.

Вот мой код:

from PyQt5 import QtCore, QtWidgets
import sys
from PyQt5 import QtGui, QtWidgets, QtPrintSupport


class Thired(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Thired, self).__init__(parent)

        self.bb = QtWidgets.QComboBox(self)
        self.bb.setGeometry(QtCore.QRect(212, 50, 400, 25))
        self.bb.setEditable(True)

        bpas = ['a','b','c']

        self.bb.addItem("")
        self.bb.setItemText(0, "")
        for bpa in bpas:
            self.bb.addItem(bpa)

        self.bb.move(50, 200)
        self.bb.activated[str].connect(self.style_choice)

    def font_choice(self):
        font, valid = QtWidgets.QFontDialog.getFont()
        if valid:
            self.styleChoice.setFont(font)

    def style_choice(self, text):
        self.styleChoice.setText(text)
        QtWidgets.QApplication.setStyle(QtWidgets.QStyleFactory.create(text))

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = Thired()
    gui.show()
    app.exec_()

Редактировать:

Я хотел бы, чтобы когдаОкно открывается, и все мои варианты всегда отображаются. Чтобы мне не нужно было нажимать на выпадающий список. Другими словами: Если окно открывается, есть список bpas, я хочу иметь возможность выбратьиз списка один из параметров bpa / и отправьте сингал, который я выбрал для этого bpa.

Чтобы объяснить себя немного подробнее (это не показано нигде в коде): bpas = ['a','b','c'] - это проекты, иЯ хочу, чтобы пользователь выбрал один из них и после выбора программыm загрузит свою подключенную базу данных.С выпадающим меню это работает, но мне не нравится, как выглядит dorpdown с большим количеством опций:)

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете использовать QListWidget с QLineEdit:

from PyQt5 import QtCore, QtWidgets
import string

class Thired(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(Thired, self).__init__(parent)

        self.line_edit = QtWidgets.QLineEdit()
        self.list_widget = QtWidgets.QListWidget()
        options = list(string.ascii_letters)
        self.list_widget.addItems(options)
        self.list_widget.itemClicked.connect(self.on_itemClicked)

        lay = QtWidgets.QVBoxLayout(self)
        lay.addWidget(self.line_edit)
        lay.addWidget(self.list_widget)
        self.resize(640, 480)

    @QtCore.pyqtSlot(QtWidgets.QListWidgetItem)
    def on_itemClicked(self, item):
        self.line_edit.setText(item.text())

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    gui = Thired()
    gui.show()
    sys.exit(app.exec_())

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...