Как изменить размер QColorDialog

Можно ли изменить размер QColorDialog? Мне не удалось заставить окно соответствующим образом изменить размер. После отображения диалогового окна оно возвращается к размеру по умолчанию.

Пример:

import sys

from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

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

        layout = QVBoxLayout()
        push_Button = QPushButton()
        layout.addWidget(push_Button)

        push_Button.clicked.connect(self.button)
        self.setLayout(layout)

    def button(self):
        color = QColorDialog(self)
        color.resize(100,100)
        print(color.size()) #Prints 100, 100
        color.show()
        print(color.size()) #Prints 551, 431

if __name__ == '__main__':

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

1 ответ

Решение

QColorDialog имеет фиксированный размер, потому что он содержит несколько пользовательских виджетов, которые не предназначены для изменения размера. Возможно переопределить эти ограничения и разрешить ручное изменение размера следующим образом:

    color = QColorDialog(self)
    color.setSizeGripEnabled(True)
    color.layout().setSizeConstraint(QLayout.SetNoConstraint)
    color.show()

Тем не менее, как вы увидите, макет быстро перепутается с небольшим изменением размера. Я также обнаружил, что после определенной точки, диалог на самом деле падает из-за исключений с плавающей запятой. Поэтому я думаю, что вам придется либо принять все как есть, либо, возможно, написать свой собственный цветной диалог.

Другие вопросы по тегам