Nyx*_*nyx 4 python qt pyqt pyqt4 python-2.7
我QPushButton在应用程序窗口中有2个:btn1需要是的高度的5倍btn2。
问题:尝试将的行跨度设置self.btn1为5使用,layout.addWidget但高度保持不变。我错过了某个设置吗?
import sys
from PyQt4 import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.initUI()
def initUI(self):
layout = QtGui.QGridLayout()
self.btn1 = QtGui.QPushButton('Hello')
self.btn2 = QtGui.QPushButton('World')
layout.addWidget(self.btn1, 1, 1, 5, 1)
layout.addWidget(self.btn2, 6, 1, 1, 1)
centralWidget = QtGui.QWidget()
centralWidget.setLayout(layout)
self.setCentralWidget(centralWidget)
def main():
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
您需要更改按钮的大小策略:
self.btn1.setSizePolicy(
QtGui.QSizePolicy.Preferred,
QtGui.QSizePolicy.Expanding)
self.btn2.setSizePolicy(
QtGui.QSizePolicy.Preferred,
QtGui.QSizePolicy.Preferred)
Run Code Online (Sandbox Code Playgroud)
在Qt doc中,默认情况下:
类似于按钮的小部件将大小策略设置为指定它们可以水平拉伸但垂直固定。
即默认的大小策略QPushButton为Minimum水平和Fixed垂直。
此外,在示例中,实现所需目标的一种更简单的方法是使用QVBoxLayout,并在调用addWidget()时设置拉伸因子。即
def initUI(self):
layout = QtGui.QVBoxLayout()
self.btn1 = QtGui.QPushButton('Hello')
self.btn2 = QtGui.QPushButton('World')
self.btn1.setSizePolicy(
QtGui.QSizePolicy.Preferred,
QtGui.QSizePolicy.Expanding)
self.btn2.setSizePolicy(
QtGui.QSizePolicy.Preferred,
QtGui.QSizePolicy.Preferred)
layout.addWidget(self.btn1, 5)
layout.addWidget(self.btn2, 1)
centralWidget = QtGui.QWidget()
centralWidget.setLayout(layout)
self.setCentralWidget(centralWidget)
Run Code Online (Sandbox Code Playgroud)