Resize Widgets with PyQT

I'm a beginner of Python and PyQT. I'm trying to use QGridLayout to make the GUI, however I've got some problems when I place an image. This is how it looks without the image:

pic without image

Pretty good for me. However, when I try to add an image in the upper-right corner I get:

pic with image

Clearly isn't what I want (I'd like that part of the widget the same size as the first image i.e approximately the size of the original title). The code is a bit long so I post just the part of the grid:

 wid = QWidget(self) self.setCentralWidget(wid) grid = QGridLayout() title = QLabel(self) newfont = QFont("Times", 20, QFont.Bold) title.setText('Interfaz Gráfica PIC18F4550') title.setFont(newfont) title.setAlignment(Qt.AlignCenter) pic = QLabel(self) pic.setPixmap(QtGui.QPixmap('escudo.gif')) m = PlotCanvas(self, width=5, height=4) connect_btn = QPushButton('Conectar', self) connect_btn.setIcon(QIcon('lautaro.jpeg')) connect_btn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) exit_btn = QPushButton('Salir', self) exit_btn.setIcon(QIcon('lautaro.jpeg')) exit_btn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) disconnect_btn = QPushButton('Desconectar', self) disconnect_btn.setIcon(QIcon('lautaro.jpeg')) disconnect_btn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) frequency_btn = QPushButton('Frecuencia', self) frequency_btn.setIcon(QIcon('lautaro.jpeg')) frequency_btn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) duty_cycle_btn = QPushButton('Duty Cycle', self) duty_cycle_btn.setIcon(QIcon('lautaro.jpeg')) duty_cycle_btn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) grid.addWidget(connect_btn, 1, 0, 2, 1) grid.addWidget(disconnect_btn, 3, 0, 2 ,1) grid.addWidget(exit_btn, 5, 0, 2, 1) grid.addWidget(m, 1, 1, 6, 1) grid.addWidget(frequency_btn, 1, 2, 3, 1) grid.addWidget(duty_cycle_btn, 4, 2, 3, 1) grid.addWidget(title, 0, 1) grid.addWidget(pic, 0, 2) wid.setLayout(grid) 

So, the question: how can I set the widget size? Clearly in this case the widgets related to title and the label are way larger than the buttons and the graph.

2

1 Answer

If you want the image to always have the same size you can set a fixed width and height as follows:

pic = QLabel(self) pic.setPixmap(QtGui.QPixmap('escudo.gif')) pic.setFixedWidth(250) pic.setFixedHeight(250) 

If you want the image to have a maximum size but it should resize and get smaller if the window gets smaller you can use the following:

pic.setMaximumWidth(250) pic.setMaximumHeight(250) 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like