Как можно переместить текст на кнопке в PyQt6 на другую строку?

Мне нужно решить проблему с созданием кнопок, на которых отображается длинный текст. Вот фрагмент кода, который я использую: 

```python
for item in btn_list: 
    button = QPushButton(item) 
    button.setFixedWidth(1000) 
    button.setStyleSheet(''' 
        hyphens: auto; 
        white-space: pre-wrap; 
    ''') 
    vlayout.addWidget(button) 
```

Проблема в том, что текст слишком длинный, и он выходит за пределы кнопки. Как можно настроить перенос строк в кнопке, чтобы текст отображался правильно?
  • 25 апреля 2025 г. 10:05
Ответы на вопрос 2
В PyQt6 можно использовать HTML для форматирования текста, который отображается на кнопке. Чтобы перенести текст на другую строку, вы можете использовать тег `<br>` в HTML-разметке. Вот как можно изменить ваш код, чтобы текст на кнопке переносился на новую строку при необходимости:

```python
for item in btn_list: 
    # Вместо прямого текста, добавляем тег <br> в HTML
    button = QPushButton(item.replace(' ', '<br>'))  # Пример: заменяем пробелы на переносы строки
    button.setFixedWidth(1000)
    button.setStyleSheet('''
        white-space: pre-wrap; 
        text-align: center;  # Центрирование текста
    ''')
    button.setStyleSheet("QPushButton {text-align: center;}")
    button.setText(item.replace(' ', '<br>'))  # Заменяем пробелы на переносы строк
    vlayout.addWidget(button)
```

Имейте в виду, что в таком примере пробелы заменяются на теги переноса строки. Вы можете использовать любую логику, чтобы решить, где должны быть перенесены строки. 

Также стоит отметить, что в Qt есть некоторые ограничения по использованию HTML в кнопках, и не все стили могут работать должным образом. Поэтому в случае сложных требований к стилю кнопки может потребоваться более детальная настройка. 

Обратите внимание, что форматирование через HTML может не поддерживать некоторые CSS-свойства, поэтому вам может понадобиться экспериментировать с разными стилями, чтобы добиться желаемого результата.
Как переносить текст на кнопках в PyQt5? 

P. S. Вообще, это какое-то извращенство - пихать такие тексты в кнопки
Похожие вопросы