J'ai un petit programme qui rend une équation typée à la volée en utilisant la fonction «joli-impression» de SymPy. Cela fonctionne bien mais n'a pas l'air très professionnel. Comme SymPy va produire du latex ou du mml, je me demandais si cela pouvait être rendu graphiquement avec un widget PySide? Je devrais évidemment changer le 'QTextBrowser()', mais à ce que je ne suis pas sûr. Je sais que Nokia fournit QtMmlWidget mais je ne suis pas sûr si cela pourrait être utilisé par PySide.render latex/mathml avec PySide
Merci beaucoup et meilleurs voeux.
from __future__ import division
import sys
import sympy
from PySide.QtGui import *
from PySide.QtCore import *
from PySide.QtXml import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
self.browser.setCurrentFont(QFont("Courier New",10,QFont.Bold))
self.lineedit = QLineEdit("please type an expression")
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
self.connect(self.lineedit, SIGNAL("textChanged (const QString&)"),self.updateUi)
def updateUi(self):
text = unicode(self.lineedit.text())
for z in range(0,9):
text = text.replace('x'+str(z),'x^'+str(z))
text = text.replace(')'+str(z),')^'+str(z))
text = text.replace(str(z)+'x',str(z)+'*x')
text = text.replace(str(z)+'(',str(z)+'*(')
try:
self.browser.append(sympy.printing.pretty(sympy.sympify(text)))
self.browser.clear()
self.browser.append(sympy.printing.pretty(sympy.sympify(text)))
except Exception:
if text=='': self.browser.clear()
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()