PyQt5 – How to allow QColorDialog Widget to resize ?
In this article we will see how we can change the size of the QColorDialog. The QColorDialog has a fixed size, because it contains several custom widgets that aren’t designed to be resizable, although we can change the layout constraint to allow it to change size.
Note : The layout quickly becomes messed up with even a little bit of resizing. Also beyond a certain point, the dialog will get crashed due to floating-point exceptions, so it is not recommended to resize the dialog.
In order to do this we use setSizeConstraint
method with the QColorDialog object’s layout object
Syntax : dialog.layout().setSizeConstraint(QLayout.SetNoConstraint)
Argument : It takes layout size constraint object as argument
Return : It returns None
Below is the implementation
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys class Window(QMainWindow): def __init__( self ): super ().__init__() # setting title self .setWindowTitle( "Python " ) # setting geometry self .setGeometry( 100 , 100 , 500 , 400 ) # calling method self .UiComponents() # showing all the widgets self .show() # method for components def UiComponents( self ): # creating a QColorDialog object dialog = QColorDialog( self ) # making size grip property enabled dialog.setSizeGripEnabled( True ) # allowing dialog to get resized dialog.layout().setSizeConstraint(QLayout.SetNoConstraint) # setting custom colors dialog.setCustomColor( 1 , Qt.red) dialog.setCustomColor( 2 , Qt.green) dialog.setCustomColor( 3 , Qt.yellow) dialog.setCustomColor( 4 , Qt.blue) # executing the dialog dialog.exec_() # creating label label = QLabel( "GeeksforGeeks" , self ) # setting geometry to the label label.setGeometry( 10 , 10 , 400 , 280 ) # making label multi line label.setWordWrap( True ) # setting stylesheet of the label label.setStyleSheet( "QLabel" "{" "border : 5px solid black;" "}" ) # getting the custom color color = dialog.customColor( 4 ) # setting graphic effect to the label graphic = QGraphicsColorizeEffect( self ) # setting color to the graphic graphic.setColor(color) # setting graphic to the label label.setGraphicsEffect(graphic) self .deleteLater() # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App. exec ()) |
Output :
Please Login to comment...