2015-04-18 43 views
1

我正在使用PyQt創建桌面應用程序。我試圖創建一個使用橫向盒和縱向盒的按鈕,但它並沒有顯示出來,除非我給特定的命令:按鈕沒有顯示在正確的位置

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

但是,通過這樣做,VBOX和橫向盒的功能似乎並沒有發揮作用。 我需要按鈕位於窗口的右下角,即使窗口大小調整爲後,該按鈕仍然保持在那裏。 使用此代碼,它位於左上角。

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),它移動的按鈕,我想要的位置,但它並沒有呆在那裏,當我重新大小的應用程序窗口。

+0

您發佈工作正常,我的代碼 - 即調整當按鈕停留在右下角。所以這個問題必須在代碼的其他地方。請發佈一個小型自包含的示例,重現您所看到的問題。 – ekhumoro

回答

0

示例代碼不起作用,因爲您正嘗試在已具有佈局的主窗口上設置佈局。

相反,你需要添加一箇中央物件,然後設置,佈局:

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