PyQt: разметка виджетов в QScrollArea
Я занимаюсь разработкой приложения для запоминания текста с использованием PyQt4. Я хочу показать все слова в пузырьках, чтобы вы увидели, как долго это слово. Но когда у меня все пузыри в моемQScrollArea
, они выровнены один под другим. Я хотел бы выровнять их рядом, но с переносом слов.
Я получил пузыри, чтобы работать с помощьюQLabel
с закругленными краями. Но теперь, когда у меня есть слова вQLabel's
PyQt рассматривает их не как слова, а как виджеты. Таким образом, PyQt помещает один виджет под другим. Я бы хотел, чтобы виджеты были выровнены рядом, пока они не достигнут конца строки, а затем они должны перейти к следующей строке - то естьQLabel's
должен действовать как слова в текстовом документе.
Вот мой код до сих пор:
f = open(r'myFile.txt')
class Bubble(QtGui.QLabel):
def __init__(self, text):
super(Bubble, self).__init__(text)
self.word = text
self.setContentsMargins(5, 5, 5, 5)
def paintEvent(self, e):
p = QtGui.QPainter(self)
p.setRenderHint(QtGui.QPainter.Antialiasing,True)
p.drawRoundedRect(0,0,self.width()-1,self.height()-1,5,5)
super(Bubble, self).paintEvent(e)
class MainWindow(QtGui.QMainWindow):
def __init__(self, text, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.MainArea = QtGui.QScrollArea
self.widget = QtGui.QWidget()
vbox = QtGui.QVBoxLayout()
self.words = []
for t in re.findall(r'\b\w+\b', text):
label = Bubble(t)
label.setFont(QtGui.QFont('SblHebrew', 18))
label.setFixedWidth(label.sizeHint().width())
self.words.append(label)
vbox.addWidget(label)
self.widget.setLayout(vbox)
self.MainArea.setWidget(self.widget)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
myWindow = MainWindow(f.read(), None)
myWindow.show()
sys.exit(app.exec_())
Когда я запускаю это, я получаю:
Но я хотел бы слова (Qlabel's
содержащие слова), чтобы быть рядом друг с другом, а не друг под другом, вот так (фотошоп):
Я провел много исследований, но никакие ответы не помогают мне расположить виджеты рядом друг с другом.