簡體   English   中英

如何在pyside2 window中顯示Python字典數據? [等候接聽]

[英]How to show Python dictionary data in pyside2 window? [on hold]

我在 python 中有一個字典列表,我想以附圖所示的方式在 python pyside2 window 中顯示這些字典數據。

圖片鏈接

這是三個具有多個鍵和值的字典,下面是示例字典

data = {
    "start time": ["2001-04-27t03:20:15-07:00","2001-04-27T12:20:15+02:00",
    "2001-04-27T10:20:15Z"],
    "Approximate datasets size in the file system" : ["6.940 MB","11 datasets"],
    "Datatypes" : ["APS", "Order APS","Slow Quantity", "Tacho Edges" , "Throughput"],
    "Quantities" : ["Rotational Speed" , "Sound Pressure"]   }

有一個包含 1000 種此類詞典的列表,我的問題是如何在 QT pyside2 中顯示它們,如附圖所示。

它可能看起來像這樣:

import sys
from PyQt5 import QtWidgets, QtCore

class MyWindow(QtWidgets.QMainWindow): 
    def __init__(self, data):
        super().__init__()

        self.data = data

        self.scrollArea = QtWidgets.QScrollArea()
        self.scrollArea.setWidgetResizable(True)
        self.setCentralWidget(self.scrollArea)
        self.widget = QtWidgets.QWidget()             
        self.scrollArea.setWidget(self.widget)         

        button = QtWidgets.QPushButton("Click me")        
        button.clicked.connect(self.onButton)

        self.grid = QtWidgets.QGridLayout(self.widget)
        self.grid.addWidget(button) 

    def onButton(self):
        i = 1
        for item in self.data:
            textLeft = f'''
Start time:  
{item["start time"][0]} 
America/Los_Angeles
{item["start time"][1]} Original 
{item["start time"][2]} UTC

Approximate datasets size in the file system:   
{item["Approximate datasets size in the file system"][0]}      
            '''

            textRight = f'''
{item["Approximate datasets size in the file system"][1]}      
Datatypes:
{' '.join(item["Datatypes"][:3])}
{' '.join(item["Datatypes"][3:])}

Quantities:
{' '.join(item["Quantities"])}
            '''

            labelLeft = QtWidgets.QLabel()
            labelLeft.setText(textLeft)
            self.grid.addWidget(labelLeft, i, 0)

            labelRight = QtWidgets.QLabel()
            labelRight.setText(textRight)
            self.grid.addWidget(labelRight, i, 1)            

            line = QtWidgets.QFrame()
            line.setFrameShape(QtWidgets.QFrame.HLine)
            self.grid.addWidget(line, i+1, 0, 1, 2)
            i += 2


data = [
    {"start time": ["2001-04-27t03:20:15-07:00", "2001-04-27T12:20:15+02:00", "2001-04-27T10:20:15Z"],
    "Approximate datasets size in the file system" : ["6.940 MB","11 datasets"],
    "Datatypes" : ["APS", "Order APS","Slow Quantity", "Tacho Edges" , "Throughput"],
    "Quantities" : ["Rotational Speed" , "Sound Pressure"]},

    {"start time": ["2222-07:00", "2222:15+02:00", "2222:15Z"],
    "Approximate datasets size in the file system" : ["2.22 MB","11 datasets"],
    "Datatypes" : ["APS", "Order APS","Slow Quantity", "Tacho Edges" , "Throughput"],
    "Quantities" : ["Rotational Speed" , "Sound Pressure"]},

    {"start time": ["333-07:00", "333:15+02:00", "333:15Z"],
    "Approximate datasets size in the file system" : ["333 MB","11 datasets"],
    "Datatypes" : ["APS", "Order APS","Slow Quantity", "Tacho Edges" , "Throughput"],
    "Quantities" : ["Rotational Speed" , "Sound Pressure"] },
]  

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    myWindow = MyWindow(data)
    myWindow.resize(500, 300)
    myWindow.show()
    app.exec_() 

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM