2015-04-18 4 views
1

Я использую PyQt для создания настольного приложения. Я пытаюсь создать кнопку, используя горизонтальный бокс и 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), он перемещает кнопку в положение, я хочу, но он не остается там, когда я изменить размер окна приложения.

+0

код вы вывесили отлично работает для меня - то есть кнопка остается в нижнем правом углу экрана при изменении размера. Таким образом, проблема (ы) должна быть в другом месте вашего кода. Пожалуйста, разместите небольшой, автономный пример, который воспроизводит проблемы, которые вы видите. – ekhumoro

ответ

0

Пример кода не работает, потому что вы пытаетесь установить макет в главном окне, у которого уже есть макет.

Вместо этого необходимо добавить центральный виджет, а затем установить расположение на том, что:

def createUI(self): 
    self.setCentralWidget(QtGui.QWidget(self)) 
    ... 
    vbox.addLayout(hbox) 
    self.centralWidget().setLayout(vbox) 
    self.setGeometry(300,200,750,450) 
    ... 
Смежные вопросы