首页 > 解决方案 > PyQt4中标签的自动调整大小

问题描述

我在 PyQt4 中添加了一个包含图像的标签。此图像在未最大化时完全适合窗口。我的目标是标签应该自动调整大小并完全适合窗口,即使在最大化时也是如此。我的代码如下:

class Ui_MainWindow(object):
   def setupUi(self, MainWindow):
       MainWindow.setObjectName(_fromUtf8("MainWindow"))
       MainWindow.resize(1047, 600)
       self.centralwidget = QtGui.QWidget(MainWindow)
       self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
       self.label = QtGui.QLabel(self.centralwidget)
       self.label.setGeometry(QtCore.QRect(0, 0, 1081, 551))
       self.label.setText(_fromUtf8(""))
       self.label.setPixmap(QtGui.QPixmap(_fromUtf8("Capture.PNG")))
       self.label.setObjectName(_fromUtf8("label"))
   if __name__ == "__main__":
      import sys
      app = QtGui.QApplication(sys.argv)
      MainWindow = QtGui.QMainWindow()
      ui = Ui_MainWindow()
      ui.setupUi(MainWindow)
      MainWindow.show()
      sys.exit(app.exec_())

请告诉我如何修改我的代码?

标签: pythonpython-3.xpython-2.7pyqtpyqt4

解决方案


您必须执行以下操作:

  • 将 设置centralwidgetcentralWidgetQMainWindow
  • 使用布局将QLabel内部放置在centralwidget.
  • 启用 的ScaledContents属性QLabel

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.centralwidget = QtGui.QWidget(MainWindow)
        MainWindow.setCentralWidget(self.centralwidget) # <--
        lay = QtGui.QVBoxLayout(self.centralwidget)
        self.label = QtGui.QLabel(self.centralwidget)
        self.label.setPixmap(QtGui.QPixmap("Capture.PNG"))
        self.label.setScaledContents(True) # <--
        lay.addWidget(self.label) # <--

推荐阅读