python - 如何在 QTextEdit PYQT 中按下按钮时突出显示和更改行选择

标签 python python-2.7 pyqt pyqt4

我试图在按 ^ 和 v 按钮上下滚动时突出显示 QTextEdit 中的行,并在输入/选择时打印所选项目。

下面是代码片段。我无法了解如何突出显示项目。

#!/usr/bin/python

""" Imports """
import sys
from PyQt4 import QtGui, QtCore
import sys, time
from PyQt4.QtCore import QSize, pyqtSignal

""" Globals """
global topTxt, midTxt, endTxt
global powerOpt, AlrmSil, bootC
global btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9
global btn0,btnDot,btnBK,btnClr,btnMain,btnChg,btnOpt,btnClrTot,btnPWR,btnAlrm,btnStrt,btnStop
global highVal, lowVal
global selectionTxt
highVal = 55
lowVal = 10
""" Globals Initialization"""
powerOpt = 0
AlrmSil = 0
class trial(QtGui.QMainWindow):
    sigTextButtonClicked = pyqtSignal(QtCore.QString)
    sigTextUpdated = pyqtSignal(QtCore.QString)

    def __init__(self):
        """ Constructor """
        super(trial, self).__init__()        
        self.initKey()
        self.initText()
        self.showUI()

    def disableBt(self):
        global btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9
        global btn0,btnDot,btnBK,btnClr,btnMain,btnChg,btnOpt,btnClrTot,btnPWR,btnAlrm,btnStrt,btnStop
        btn1.setEnabled(False)
        btn2.setEnabled(False)
        btn3.setEnabled(False)
        btn4.setEnabled(False)
        btn5.setEnabled(False)
        btn6.setEnabled(False)
        btn7.setEnabled(False)
        btn8.setEnabled(False)
        btn9.setEnabled(False)
        btn0.setEnabled(False)
        btnDot.setEnabled(False)
        btnBK.setEnabled(False)

    def enableBt(self):
        global btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9
        global btn0,btnDot,btnBK,btnClr,btnMain,btnChg,btnOpt,btnClrTot,btnPWR,btnAlrm,btnStrt,btnStop
        btn1.setEnabled(True)
        btn2.setEnabled(True)
        btn3.setEnabled(True)
        btn4.setEnabled(True)
        btn5.setEnabled(True)
        btn6.setEnabled(True)
        btn7.setEnabled(True)
        btn8.setEnabled(True)
        btn9.setEnabled(True)
        btn0.setEnabled(True)
        btnDot.setEnabled(True)
        btnBK.setEnabled(True)




    def initKey(self):   
        """   This function initializes the buttons in the UI """ 
        global btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9
        global btn0,btnDot,btnBK,btnClr,btnMain,btnChg,btnOpt,btnClrTot,btnPWR,btnAlrm,btnStrt,btnStop
        btn1 = QtGui.QPushButton("1", self)
        btn1.setFixedWidth(30)
        btn1.move(650, 50)
        # btn1.setEnabled(False)



        btn2 = QtGui.QPushButton("2", self)
        btn2.setFixedWidth(30)
        btn2.move(690, 50)
        # btn2.setEnabled(False)

        btn3 = QtGui.QPushButton("3", self)
        btn3.setFixedWidth(30)
        btn3.move(730, 50)

        btn4 = QtGui.QPushButton("4", self)
        btn4.setFixedWidth(30)
        btn4.move(650, 100)

        btn5 = QtGui.QPushButton("5", self)
        btn5.setFixedWidth(30)
        btn5.move(690, 100)

        btn6 = QtGui.QPushButton("6", self)
        btn6.setFixedWidth(30)
        btn6.move(730, 100)

        btn7 = QtGui.QPushButton("7", self)
        btn7.setFixedWidth(30)
        btn7.move(650, 150)

        btn8 = QtGui.QPushButton("8", self)
        btn8.setFixedWidth(30)
        btn8.move(690, 150)

        btn9 = QtGui.QPushButton("9", self)
        btn9.setFixedWidth(30)
        btn9.move(730, 150)

        btnBK = QtGui.QPushButton("Back", self)
        btnBK.setFixedWidth(40)
        btnBK.move(650, 200)

        btn0 = QtGui.QPushButton("0", self)
        btn0.setFixedWidth(30)
        btn0.move(690, 200)

        btnDot = QtGui.QPushButton(".", self)
        btnDot.setFixedWidth(30)
        btnDot.move(730, 200)

        btnUp = QtGui.QPushButton("^", self)
        btnUp.setFixedWidth(30)
        btnUp.move(450, 50)

        btnDwn = QtGui.QPushButton("v", self)
        btnDwn.setFixedWidth(30)
        btnDwn.move(450, 200)

        btnEnt = QtGui.QPushButton("Enter", self)
        btnEnt.setFixedWidth(30)
        btnEnt.move(450, 125)


        # Below codes are for button press handling
        btn1.clicked.connect(self.digitClicked)            
        btn2.clicked.connect(self.digitClicked)
        btn3.clicked.connect(self.digitClicked)            
        btn4.clicked.connect(self.digitClicked)
        btn5.clicked.connect(self.digitClicked)            
        btn6.clicked.connect(self.digitClicked)
        btn7.clicked.connect(self.digitClicked)            
        btn8.clicked.connect(self.digitClicked)
        btn9.clicked.connect(self.digitClicked)            
        btn0.clicked.connect(self.digitClicked)

        btnDot.clicked.connect(self.digitClicked)
        btnBK.clicked.connect(self.digitClicked)

        btnUp.clicked.connect(self.selectUp)
        btnDwn.clicked.connect(self.selectDown)
        btnEnt.clicked.connect(self.selected)

        # btnClr.clicked.connect(self.digitClicked)

    def selectUp(self):
        print "up pressed"
    def selectDown(self):
        print "down pressed"
    def selected(self):
        print "selected"

    def initText(self):
        """ This portion initializes the Display of the UI, which is in black and green color """
        global topTxt, midTxt, backTxt, midTxtTab

        topTxt = QtGui.QTextEdit("", self)
        topTxt.setFixedWidth(350)
        topTxt.setFixedHeight(30)
        topTxt.setReadOnly(True)
        topTxt.setStyleSheet('QTextEdit {background-color: #8b8989; color: #000000;}')
        topTxt.move(50, 50)
        topTxt.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        topTxt.setFontPointSize(10)  
        topTxt.setFontWeight (100) 
        topTxt.setAlignment(QtCore.Qt.AlignCenter)
        topTxt.insertPlainText("Select Department")


        midTxt = QtGui.QTextEdit("", self)
        midTxt.setFixedWidth(350)
        midTxt.setFixedHeight(120)
        midTxt.setReadOnly(True)
        midTxt.setStyleSheet('QTextEdit {background-color: #ffffff; color: #000000;}')
        midTxt.move(50, 80)
        midTxt.setFrameStyle(QtCore.Qt.FramelessWindowHint)
        midTxt.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)


        midTxtTab = QtGui.QTextEdit("", self)
        midTxtTab.setFixedWidth(150)
        midTxtTab.setFixedHeight(120)
        midTxtTab.setReadOnly(True)
        midTxtTab.setStyleSheet('QTextEdit {background-color: #ffffff; color: #000000;}')
        midTxtTab.move(105, 80)
        midTxtTab.setFrameStyle(QtCore.Qt.FramelessWindowHint)
        midTxtTab.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)




        midTxtTab.setFontPointSize(10)
        midTxtTab.setAlignment(QtCore.Qt.AlignCenter)
        midTxtTab.insertPlainText("\n\naaaaaa\n"
                                "bbbbbbb\n"
                                "cccccc\n"
                                "ddddddd\n")
        midTxtTab.setDisabled(True)


        backTxt = QtGui.QTextEdit("", self)
        backTxt.setFixedWidth(55)
        backTxt.setFixedHeight(30)
        backTxt.setReadOnly(True)
        backTxt.setStyleSheet('QTextEdit {background-color: #87cefa; color: white;}')
        backTxt.move(50, 50)
        backTxt.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        backTxt.setFontPointSize(10)  
        backTxt.setAlignment(QtCore.Qt.AlignCenter)
        backTxt.insertPlainText("< Back")


    def showUI(self):
        """ everything initialized , now just show it """
        self.statusBar()        
        self.setGeometry(300, 300, 800, 300)
        self.setWindowTitle('trial')
        self.show()



    def digitClicked(self):
        print"here"
        global topTxt, midTxt, backTxt, midTxtTab
        midTxtTab.clear()

        sender = self.sender()

        self.sigTextButtonClicked.emit(sender.text())




    def midTxtInsert(self, txt,font, algmt):
        """ UI is split to three region, this is mid part which is in green """
        global topTxt, midTxt, endTxt        
        midTxt.setFontPointSize(font)        
        if algmt.upper() == "C":
            midTxt.setAlignment(QtCore.Qt.AlignCenter)
        elif algmt.upper() == "R":
            midTxt.setAlignment(QtCore.Qt.AlignRight)
        else:
            midTxt.setAlignment(QtCore.Qt.AlignLeft)  
        midTxt.insertPlainText(txt)
        self.update()         


    def topTxtInsert(self, txt, font, algmt):
        """ UI is split to three region, this is top part which is in black """
        global topTxt, midTxt, endTxt
        topTxt.setFontPointSize(font)
        if algmt.upper() == "C":
            topTxt.setAlignment(QtCore.Qt.AlignCenter)
        elif algmt.upper() == "R":
            topTxt.setAlignment(QtCore.Qt.AlignRight)
        else:
            topTxt.setAlignment(QtCore.Qt.AlignLeft)
        topTxt.insertPlainText(txt)
        self.update()  



def main():
    """ Function main """
    app = QtGui.QApplication(sys.argv)
    ex = trial()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

最佳答案

可以通过以下方式完成:

 def selectDown(self):
        global topTxt, midTxt, backTxt, midTxtTab, list_
        print "down pressed"
        global blkNum 
        cursor = midTxtTab.textCursor()
        cursor.movePosition(QtGui.QTextCursor.Start)
        # cursor.movePosition(QtGui.QTextCursor.Down)

        tmp = cursor.blockFormat()
        tmp.setBackground(QtGui.QBrush(QtCore.Qt.yellow))
        cursor.setBlockFormat(tmp)

关于python - 如何在 QTextEdit PYQT 中按下按钮时突出显示和更改行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32775309/

相关文章:

python - 使用 PyMongo 将 Pandas 数据框插入 mongodb

python - 强制字典将列表读取为元组

python - 如何使用 PIL 将透明图像的背景设置为白色?

python - 使用 Python Twisted 的代理服务器

matlab - 相机到校准图案的距离会影响校准参数吗?

python - PyQt 模拟最小化按钮 "_"

python - QTreeWidget中拖动时如何隐藏屏幕截图后再释放?

python - 该数字属于斐波那契数列吗?

python - 使用自定义模型编辑 QTreeView 中的第二列不显示编辑器

python - 将对象转储到 JSON 文件的两种方法有什么区别吗?