Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

from PythonQt import QtCore, QtGui 

 

class OutputConsole(object): 

 

    def __init__(self): 

 

        self.textEdit = QtGui.QTextEdit() 

        self.textEdit.setWindowTitle('Output console') 

        self.textEdit.readOnly = True 

        self.scrollBar = self.textEdit.verticalScrollBar() 

 

    def addToAppWindow(self, app, visible=True): 

        self.dockWidget = app.addWidgetToDock(self.textEdit, QtCore.Qt.BottomDockWidgetArea, visible=visible) 

 

    def clear(self): 

        self.textEdit.clear() 

 

    def scrollToBottom(self): 

        self.scrollBar.setValue(self.scrollBar.maximum) 

 

    def scrollToTop(self): 

        self.scrollBar.setValue(self.scrollBar.minimum) 

 

    def showDock(self): 

        self.dockWidget.show() 

 

    def appendText(self, text, color=None, bold=False): 

        '''Add text to the output console.  The color arg should be a string that is a valid CSS color 

           string, for example: red, or #FF0000, or rgb(255,0,0).''' 

        if color is not None: 

            text = '<font color="%s">%s</font>' % (color, text) 

        if bold: 

            text = '<b>%s</b>' % text 

 

        self.textEdit.append(text.replace('\n', '<br/>')) 

 

    def _pygmentsDemo(self): 

 

        from pygments import highlight 

        from pygments.lexers import PythonLexer 

        from pygments.formatters import HtmlFormatter 

 

        code = 'def foo(x="bar"): return True' 

 

        lexer = PythonLexer() 

        formatter = HtmlFormatter() 

        codeHtml = highlight(code, lexer, formatter) 

 

        doc = self.textEdit.document() 

        doc.defaultStyleSheet = formatter.get_style_defs() 

        doc.setHtml(codeHtml)