J'ai modifié un court morceau de code pyqt pour produire un rendu en temps réel de l'expression d'un utilisateur. J'ai utilisé la fonction pretty-printing de sympy pour cela, mais la sortie n'apparaît pas correctement car QTextBrowser utilise une police proportionnelle plutôt qu'une police à espacement fixe.Essayer de produire une sortie monospace dans le navigateur pyqt
En tant que débutant, j'apprécierais également toute autre idée que vous avez eue sur le code.
Un grand merci et meilleurs voeux, Geddes
from __future__ import division
import sys
import sympy
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Form(QDialog):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.browser = QTextBrowser()
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:
if text=='': self.browser.clear()
app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()
Bonne prise sur 'setFontFamily', j'allais éditer ma réponse à cela depuis que j'ai couru à côté de cela dans les docs après 'setCurrentFont' Je vais laisser le mien comme' setCurrentFont' pour varier les opinions, et aussi au cas où il veut définir la taille de la police ou autre chose :) – Benn
@Benn: 'setCurrentFont' a du sens si vous vouloir définir le même objet de police sur plusieurs widgets. Pour les widgets simples, 'setFontFamily' est une bonne option. Les deux sont corrects;) – AndiDog
Bon conseil sur l'exception - Je me demandais comment enregistrer les erreurs! Merci beaucoup pour votre aide. – Geddes