Как уменьшить размер QComboBox с PyQt? - PullRequest
1 голос
/ 13 апреля 2019

Я создал небольшую программу с PyQt, в которую я поместил QComboBox, но эта содержит только список из 2 букв. Поскольку окно программы маленькое, для экономии места я бы хотел уменьшить ширину QComboBox.

Вот как это выглядит сейчас. Ширина слишком велика.

This is what it looks like now. The width is too large.

Я искал в интернете, но после долгих поисков я все еще ничего не нашел. Заранее спасибо, если у вас есть идея.

1 Ответ

0 голосов
/ 13 апреля 2019

Есть несколько способов изменить размер виджета.Допустим, QComboBox определяется следующим образом:

combo = QComboBox(self)

Одним из способов является использование QWidget.resize(width, height)

combo.resize(200,100)

Для автоматического получения правильного размера,Вы можете использовать QWidget.sizeHint() или sizePolicy()

combo.resize(combo.sizeHint())

Если вы хотите установить фиксированный размер, вы можете использовать setFixedSize(width, height), setFixedWidth(width) или setFixedHeight(height)

combo.setFixedSize(400,100)
combo.setFixedWidth(400)
combo.setFixedHeight(100)

Вот пример:

enter image description here

from PyQt5.QtWidgets import (QWidget, QLabel, QComboBox, QApplication)
import sys

class ComboboxExample(QWidget):
    def __init__(self):
        super().__init__()

        self.label = QLabel("Ubuntu", self)

        self.combo = QComboBox(self)
        self.combo.resize(200,25)
        # self.combo.resize(self.combo.sizeHint())
        # self.combo.setFixedWidth(400)
        # self.combo.setFixedHeight(100)
        # self.combo.setFixedSize(400,100)
        self.combo.addItem("Ubuntu")
        self.combo.addItem("Mandriva")
        self.combo.addItem("Fedora")
        self.combo.addItem("Arch")
        self.combo.addItem("Gentoo")

        self.combo.move(25, 25)
        self.label.move(25, 75)

        self.combo.activated[str].connect(self.onActivated)        

        # self.setGeometry(0, 0, 500, 125)
        self.setWindowTitle('QComboBox Example')
        self.show()

    def onActivated(self, text):
        self.label.setText(text)
        self.label.adjustSize()  

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ComboboxExample()
    sys.exit(app.exec_())
...