1

我有一个 python 函数F(n,m),带有nm整数,我希望以图形方式将其值显示到表格中。

像这样的东西:

在此处输入图像描述

我必须以图形方式(进入一些 gui)进行操作,因为我需要从 1 打印到 N 和 M 的较大值(有时约为 1000),并且在控制台中无法读取。

另外,对于 n 和 m 的某些组合,我需要更改颜色,以便更清楚地看到这些情况的值。

我想问我如何尽可能方便地在python中做到这一点。

注意:这张桌子是在谷歌图片上随机找到的。它的内容与我的需要无关。我需要打印 F(n,m) 整数,与 sin、cos 等无关。只有自然数等。只有图形表与此图像相关。

4

2 回答 2

2

使用 PyQt4:

import sys  
from PyQt4 import QtCore, QtGui

def F(n, m):
    return n + m

class MainWindow(QtGui.QWidget):
    # http://stackoverflow.com/a/11458784/190597 (reclosedev)
    def __init__(self, parent=None):
        self.rows = range(50)
        self.cols = range(100)
        super(MainWindow, self).__init__(parent)
        self.table_widget = QtGui.QTableWidget()
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.table_widget)
        self.setLayout(layout)
        self.populate()

    def populate(self):
        self.table_widget.setRowCount(len(self.rows))
        self.table_widget.setColumnCount(len(self.cols))
        self.table_widget.setHorizontalHeaderLabels(map(str, self.cols))
        for i, n in enumerate(self.rows):
            for j, m in enumerate(self.cols):
                value = QtGui.QTableWidgetItem(str(F(n, m)))
                self.table_widget.setItem(i, j, value)
        self.table_widget.item(5,2).setBackgroundColor(QtGui.QColor(0,255,255))
        self.table_widget.item(5,2).setTextColor(QtGui.QColor("red"))

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    wnd = MainWindow()
    wnd.resize(640, 480)
    wnd.show()
    sys.exit(app.exec_())

在此处输入图像描述

于 2013-04-01T01:48:20.187 回答
1

也许构建一个网页作为输出可能是一个很好的解决方案,您可以通过在标准输出或输出文件中打印 html 文件来做到这一点。

在生成的网页中,您可以在表格中显示您的数据,查看以下代码:

print '<html><body>'
print '<table style="border: 1px solid;">'
print '<tr><th>A</th><th>sin A</th><th>cos A</th>...</tr>'

for item in data:
    print '<tr>'
    print '<td>', item['degree'], '</td>'
    print '<td>', item['sin'], '</td>'
    print '<td style="color: {}">'.format('red' if item['cos'] > 20 else 'blue'), item['cos'], '</td>'
    ...
    print '</tr>'
于 2013-04-01T00:18:40.187 回答