2014-03-06 6 views
3

이 코드를 실행하면 레이블, lineedit 및 두 개의 버튼이있는 간단한 대화 상자가 생성됩니다. 모든 위젯은 대화 상자의 가로 크기 조정에 아름답게 응답합니다. 그러나 대화 상자의 아래쪽에있는 단추는 대화 상자 창의 아래쪽 가장자리에 수직으로 크기가 조정될 때 고정되지 않습니다. 버튼이 항상 대화 상자의 아래쪽 가장자리에 있는지 확인하는 방법은 무엇입니까?PyQt : 대화 상자의 아래쪽 가장자리에 위젯을 붙이는 방법

from PyQt4 import QtCore, QtGui 
app = QtGui.QApplication(sys.argv) 



class mainWindow(QtGui.QMainWindow): 

    def __init__(self): 
     super(mainWindow, self).__init__() 

     mainQWidget = QtGui.QWidget() 
     mainLayout=QtGui.QFormLayout() 
     mainLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) 

     label = QtGui.QLabel('My Label') 
     lineEdit = QtGui.QLineEdit() 
     mainLayout.addRow(label, lineEdit) 

     ButtonBox = QtGui.QGroupBox() 
     ButtonsLayout = QtGui.QHBoxLayout() 

     Button_01 = QtGui.QPushButton("Close") 
     Button_02 = QtGui.QPushButton("Execute") 

     ButtonsLayout.addWidget(Button_01) 
     ButtonsLayout.addWidget(Button_02) 

     ButtonBox.setLayout(ButtonsLayout) 
     mainLayout.addRow(ButtonBox) 

     mainQWidget.setLayout(mainLayout) 
     self.setCentralWidget(mainQWidget) 


if __name__ == '__main__': 
    window = mainWindow() 
    window.show() 
    window.raise_() 
    window.resize(480,320) 
    app.exec_() 
+0

: 현재 대화에 따라 예를 들어

당신이 대화를 원한다면,'QDialog'에서하지 QMainWindow''에서 상속합니다. – Hyperboreus

+0

불행히도 QDialog에는 QMainWindow가 수행하는 동안 (OSX에서) '최소화 대화 상자'버튼이 없습니다. QMainWindow를 QDialog에 사용했을 때의 부작용은 무엇입니까? 왜 QMainWindow에 대한 QDialog 사용에 대한 귀하의 추천에 대한 이유가 있습니까? – alphanumeric

+0

글쎄, QDialog에는'accepted' 및'rejected' 슬롯이 있습니다. 그것은 모달 일 수도 있습니다 (그러나 저는 MainWindow도 역시 확실하지 않다고 생각합니다). – Hyperboreus

답변

1

나는 QFormLayout하고 버튼의 QHBoxLayout 사이에 스트레칭과 함께, 메인 레이아웃으로 QVBoxLayout을 사용하는 것이 좋습니다 것입니다. 그냥 보조 노트에

import sys 
from PyQt4 import QtGui 


class MainWindow(QtGui.QMainWindow): 

    def __init__(self): 
     super(MainWindow, self).__init__() 

     label = QtGui.QLabel('My Label') 
     line_edit = QtGui.QLineEdit() 

     form_layout = QtGui.QFormLayout() 
     form_layout.addRow(label, line_edit) 

     close_button = QtGui.QPushButton('Close') 
     execute_button = QtGui.QPushButton('Execute') 

     button_layout = QtGui.QHBoxLayout() 
     button_layout.addWidget(close_button) 
     button_layout.addWidget(execute_button) 

     main_layout = QtGui.QVBoxLayout() 
     main_layout.addLayout(form_layout) 
     main_layout.addStretch() 
     main_layout.addLayout(button_layout) 

     central_widget = QtGui.QWidget() 
     central_widget.setLayout(main_layout) 
     self.setCentralWidget(central_widget) 


if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    window = MainWindow() 
    window.resize(480, 320) 
    window.show() 
    sys.exit(app.exec_()) 
+0

우수! 감사! – alphanumeric