在二维图形表中显示函数的值

时间:2013-04-01 00:13:16

标签: python pyqt pyqt4

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

这样的事情:

enter image description here

我必须以图形方式(进入某些gui),因为我需要从1打印到N和M的大值(有时是~1000),而在控制台中则无法读取。

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

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

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

2 个答案:

答案 0 :(得分: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_())

enter image description here

答案 1 :(得分: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>'