1
런타임 중에 버튼을 눌러 새 위젯을 추가하려고합니다 (아래 예제에서 레이블 사용). 여기 예 :PyQt : 런타임 중에 스크롤 영역에 위젯 추가하기
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Widget(QWidget):
def __init__(self, parent= None):
super(Widget, self).__init__()
btn_new = QPushButton("Append new label")
self.connect(btn_new, SIGNAL('clicked()'), self.add_new_label)
#Container Widget
self.widget = QWidget()
#Layout of Container Widget
layout = QVBoxLayout(self)
for _ in range(20):
label = QLabel("test")
layout.addWidget(label)
self.widget.setLayout(layout)
#Scroll Area Properties
scroll = QScrollArea()
scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(False)
scroll.setWidget(self.widget)
#Scroll Area Layer add
vLayout = QVBoxLayout(self)
vLayout.addWidget(btn_new)
vLayout.addWidget(scroll)
self.setLayout(vLayout)
def add_new_label(self):
label = QLabel("new")
self.widget.layout().addWidget(label)
if __name__ == '__main__':
app = QApplication(sys.argv)
dialog = Widget()
dialog.show()
app.exec_()
응용 프로그램을 시작할 때 모든 것이 정상적으로 보입니다. 레이블 목록이 올바르게 표시되고 크기도 정확합니다. 그러나 새 레이블을 추가하기 위해 버튼을 여러 번 누르면 새 레이블이 목록에 추가되지만 크기가 변경됩니다. 목록의 모든 레이블은 작아집니다.
어떻게이 오류를 해결할 수 있습니까? 그것은 (그리고는 그래서 그들은 모두 같은 공간에서 함께 숙청 얻을)에 더 많은 자식 위젯을 추가 할 때 분명히 위젯 크기 조정을 중지
scroll.setWidgetResizable(False)
: