PyQt5:如何在函数“ dollar()”中完成此代码

时间:2019-05-07 14:24:55

标签: python python-3.x pyqt pyqt5

请帮助我完成此代码。我想做一个文本编辑器,当我在input dialog中给一个数字时,一些文本或某些符号或一些数字会插入到我的文本行中以在输入对话框中进行编号,并以1开头来输入对话框编号...是代码,您可以知道我想做什么。 请查看代码,并告诉我该怎么做?

from PyQt5.QtWidgets import (QWidget,QApplication,QTextEdit,
    QInputDialog,QPushButton,QVBoxLayout)
import sys

class Tbx(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.vbox = QVBoxLayout()
        self.btn = QPushButton('ClickMe',self)
        self.btn.clicked.connect(self.dollar)
        self.te = QTextEdit(self)
        self.vbox.addWidget(self.te)
        self.vbox.addWidget(self.btn)
        self.setLayout(self.vbox)
        self.setGeometry(300,300,400,250)
        self.setWindowTitle('Application')
        self.show()
def dollar(self):
    text_1_int , ok = QInputDialog.getInt(self,'HowMany?','Enter How Many dollar do you want ?')
    if not ok:
        return
    try:
        current_lines = self.te.toPlainText().split('\n')
        new_lines = list()
        for dollar_counter in range(1, text_1_int + 1):
            word = '$' * dollar_counter
            new_lines += [text + word for text in current_lines]
        self.te.setPlainText("\n".join(new_lines))
                    #I want this:
                    #...Texts in TextEditor at first:
                    #Hi
                    #User
                    #agent
                    #========================================================================
                    #...Text in TextEditor when I press the button and give 3 in InputDialog:
                    #Hi$
                    #Hi$$
                    #Hi$$$
                    #User$
                    #User$$
                    #User$$$
                    #agent$
                    #agent$$
                    #agent$$$
                    #Hi@
                    #Hi@@
                    #Hi@@@
                    #User@
                    #User@@
                    #User@@@
                    #agent@
                    #agent@@
                    #agent@@@
                    #Hi#
                    #Hi##
                    #Hi###
                    #User#
                    #User##
                    #User###
                    #agent#
                    #agent##
                    #agent###
                    #Hi!
                    #Hi!!
                    #Hi!!!
                    #User!
                    #User!!
                    #User!!!
                    #agent!
                    #agent!!
                    #agent!!!
                    #Hi1
                    #Hi12
                    #Hi123
                    #User1
                    #User12
                    #User123
                    #agent1
                    #agent12
                    #agent123
                    #========================================================================
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Tbx()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:1)

您将在每次迭代时替换文本编辑中的文本。 最简单(更清晰)的方法是先生成所有行,然后再尝试将其添加到文本编辑中。

例如:

def dollar(self):
    text_1_int , ok = QInputDialog.getInt(self,'HowMany?','Enter How Many dollar do you want ?')
    if not ok:
        return
    try:
        current_lines = self.te.toPlainText().split('\n')
        new_lines = list()
        for dollar_counter in range(1, text_1_int + 1):
            word = '$' * dollar_counter
            new_lines += [text + word for text in current_lines]
        self.te.setPlainText("\n".join(new_lines))
    except:
        error_msg = QMessageBox()
        error_msg.setIcon(QMessageBox.Critical)
        error_msg.setText('Please Enter Just Number')
        error_msg.setWindowTitle("Error")
        error_msg.exec_()

如果我在文本输入中输入3:

enter image description here enter image description here

顺便说一句,dollar_counter增量是无用的:它将由for循环处理。