Работа с Central Widget в PyQt, настройка выравнивание виджетов в QScrollArea
Занимаюсь разработкой небольшого приложения и столкнулся со следующей проблемой:
Из-за большого количества элементов необходимо добавить ScrollBar
'ы, долгое время не мог разобраться, как это сделать, пока не нашел способ через self.setCentralWidget()
.
Скроллбар появился, но теперь все элементы настроены не как сетка, а тупо выровнены по середине, есть ли возможность исправить это так, чтобы и скроллбары были и геометрия объектов осталась прежней?
Заранее спасибо!
class srok_window(QMainWindow):
def __init__(self):
super(srok_window, self).__init__()
self.setGeometry(30, 30, 1400, 700)
self.setWindowTitle('Synop 0.2')
self.form_layout = QVBoxLayout()
self.widget = QWidget()
self.scroll = QScrollArea()
default_left_value = 0
for city in self.values_of_telegrams:
# Create Label name
name = QLabel(self)
name.setText(self.values_of_telegrams[city][0])
name.setFont(self.general_font)
name.setStyleSheet(self.style_sheet_names)
name.setGeometry(15 + default_left_value, 30, 150, 15)
name.setAlignment(Qt.AlignCenter)
default_left_value += 150
self.form_layout.addWidget(name)
self.widget.setLayout(self.form_layout)
self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.scroll.setWidgetResizable(True)
self.scroll.setWidget(self.widget)
self.setCentralWidget(self.scroll)
Источник: Stack Overflow на русском