PyQt:如何创建多行列表小部件?

时间:2017-04-03 02:59:04

标签: python python-3.x pyqt pyqt5

基本上,我在表格中有文字,我希望在GUI应用程序中显示为列表。

我有什么:

column1    | column2    | column3   |

-----------| -----------| ----------|

col1atext  | col2atext  | col3atext |

col1btext  | col2btext  | col3btext |

我需要什么:

col1atext    #wrap to the next line  

col2atext    #wrap to the next line

col3atext      

------------

col1btext    #wrap to the next line

col2btext    #wrap to the next line

col3btext      

------------

我已经用尽了谷歌搜索,但没有找到任何这方面的例子。我看到的一切只允许列表中的一行文本,但我想显示一个列表列表(多行文本)。我可以创建一个单独的文本字符串,在单独的文本片段之间有足够的空格,以强制文本环绕几行,但这似乎不是一个真正的解决方案(下面的伪代码)。

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
import PCA_mod2ui #UI design file

class PCAmod2App(QtWidgets.QMainWindow, PCA_mod2ui.Ui_MainWindow):
    def __init__(self, parent=None):
        super(PCAmod2App, self).__init__(parent)
        self.setupUi(self)
        ## below defined in PCA_mod2ui, converted from QT Designer
        """
        self.projectListWidget = QtWidgets.QListWidget(self.centralwidget)
        self.projectListWidget.setGeometry(QtCore.QRect(20, 10, 311, 531))
        self.projectListWidget.setLineWidth(1)
                self.projectListWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
        self.projectListWidget.setAlternatingRowColors(True)
            self.projectListWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
            self.projectListWidget.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem)
        self.projectListWidget.setProperty("isWrapping", True)
        self.projectListWidget.setWordWrap(True)
        self.projectListWidget.setSelectionRectVisible(True)
        self.projectListWidget.setObjectName("projectListWidget")
        """
        dpspace = ' '
        spacer =95

        datapoint1a='text1'
        datapoint1b='text2'
        datapoint1c='text3'
        d1aspace = dpspace*(spacer-len(datapoint1a))
        d1bspace = dpspace*(spacer-len(datapoint1b))
        datapoint1 =datapoint1a+d1aspace+datapoint1b+d1bspace+datapoint1c

        datapoint2a='2'+datapoint1a
        datapoint2b='2'+datapoint1b
        datapoint2c='2'+datapoint1c
        d2aspace = dpspace*(spacer-len(datapoint2a))
        d2bspace = dpspace*(spacer-len(datapoint2b))
        datapoint2 =datapoint2a+d2aspace+datapoint2b+d2bspace+datapoint2c

        datalist=[datapoint1,datapoint2]

        self.projectListWidget.addItems(datalist)

def main():
    app = QtWidgets.QApplication(sys.argv)
    form = PCAmod2App()
    form.show() #show the form
    app.exec_() #execute the app

if __name__ == '__main__':
    main()

有什么想法让这更好吗?

更新4/10/17:找到了question的解决方案。

0 个答案:

没有答案