按钮未显示在正确的位置

时间:2015-04-18 16:29:41

标签: python button layout resize pyqt

我正在使用PyQt创建桌面应用程序。我正在尝试使用hbox和vbox创建一个按钮,但除非我提供特定的命令,否则它不会显示:

  button1 = QtGui.QPushButton("Exit", self)

但是,通过这样做,vbox和hbox功能似乎不起作用。 我需要按钮位于窗口的右下角,即使在调整窗口大小后也会停留在那里。 使用此代码,它位于左上角。

from PyQt4 import QtGui, QtCore
import sys
class Trial(QtGui.QMainWindow):
    def __init__(self):
        super(Trial,self).__init__()
        self.createUI() 
    def createUI(self):     
        button1 = QtGui.QPushButton("Exit",self)
        button1.clicked.connect(self.close)
        hbox = QtGui.QHBoxLayout()
        hbox.addStretch(1)  #stretches it to the right end of the page
        hbox.addWidget(button1)
        vbox = QtGui.QVBoxLayout()
        vbox.addStretch(1)  #stretches it to the bottom end of the page
        vbox.addLayout(hbox)
        self.setLayout(vbox)
        button1.resize(button1.sizeHint())
        self.setGeometry(300,200,750,450)
        self.setWindowTitle('Testing')
        self.show()        
def main():
    app= QtGui.QApplication(sys.argv) 
    w=Trial()
    sys.exit(app.exec_())
if __name__=='__main__':
    main()

如果我使用button1.move(420, 400),它会将按钮移动到我想要的位置,但是当我重新调整应用程序窗口大小时它不会停留在那里。

1 个答案:

答案 0 :(得分:0)

示例代码不起作用,因为您尝试在主窗口上设置布局,该窗口已经有布局。

相反,您需要添加一个中央窗口小部件,然后在其上设置布局:

def createUI(self):
    self.setCentralWidget(QtGui.QWidget(self))
    ...
    vbox.addLayout(hbox)
    self.centralWidget().setLayout(vbox)
    self.setGeometry(300,200,750,450)
    ...