文本编辑中的PyQt5显示功能输出

时间:2018-12-18 08:46:32

标签: python pyqt5

我正在尝试为应用程序创建GUI,该应用程序将文件中的文本行读取到PyQt5中的纯文本编辑中。我是PyQt5的新手,并通过设计器创建了此GUI,以尝试使用PyQt5升级我使用Tkinter制作的应用程序的GUI。我知道我需要利用的“小部件”的名称,但是我不知道编写和格式化代码的正确方法。以下是我要执行的操作的示例,但是与其在“文本编辑”中显示文本,不如将其打印到Python Shell中。很好。

self.pushButton.clicked.connect(self.Display_Tweets)

def Display_Tweets(self):
    readtweets = open("Tweetfile", "r")
    tweetlist = readtweets.readlines()
    for x in tweetlist:
        print(x)
    readtweets.close()

这会在我单击按钮时将要在文本编辑框中显示的内容打印到Shell,因此我需要做的就是告诉它在“文本编辑”上显示“ x”,而不是打印出来。由于我是PyQt5的新手,因此实际上我不知道该使用什么正确的语法,也找不到任何相关的最新文档。

因此,当我尝试更改功能以改为在“纯文本编辑”小部件上显示文件的行时,我肯定会遇到问题,因为我搞砸了“语法”。 “计划文本编辑”窗口小部件的名称是“ plainTextEdit”,但是我不确定如何向其中添加文本。如果我运行下面的代码,则当我按下按钮时,GUI将关闭。再次,上面的代码将要通过文本编辑显示的内容打印到Shell中,我只是不知道如何将其添加到文本编辑中。我已经对此处显示的内容进行了多种尝试,但是它们都以GUI刚刚关闭为结尾。

self.pushButton.clicked.connect(self.Display_Tweets)

def Display_Tweets(self):
    readtweets = open("Tweetfile", "r")
    tweetlist = readtweets.readlines()
    for x in tweetlist:
        self.plainTextEdit.append(x)
    readtweets.close()

如果您使用下面的代码创建一个名为“ DisplayTweets”的文本编辑框,则可以在tkinter中完成我正在尝试的操作。对于tkinter,您只需编写文本编辑框的名称,使用插入功能,然后在括号中告诉它在哪里添加文本行(在下面的代码中,将其添加到文本框的末尾),然后你告诉它要添加什么。因此,我已经在Tkinter进行了这项工作,我只想知道如何在PyQt5中执行相同的操作,而我还没有找到好的资源。

def Display_Tweets():
    readtweets = open("Tweetfile", "r")
    tweetlist = readtweets.readlines()
    for x in tweetlist:
        DisplayTweets.insert(END, x)        
    readtweets.close()

我想补充一点,我不确定为什么用户“ eyllanesc”将其继续引用为关于如何在PlainTextEdit中添加多行的重复问题。这是一个有关如何在PlainText Edit中添加任何行的问题,就像我尝试关闭GUI时一样。我从来没有遇到过将仅一行添加到PlainTextEdit的问题。我知道我是新来的,但我不会因此而让你尝试绕过我。有许多新用户都在努力学习与我一样的东西,而您却无法通过将用户引介到与我所提出的问题不同的问题来帮助您。任何新用户,请参考用户“ Lt Worf”的答案,而不是ellyanesc。沃尔夫中尉回答了这个问题,并给出了令人难以置信的良好资源。

2 个答案:

答案 0 :(得分:0)

PyQt只是Qt的生成包装器,因此您需要对所有使用的Qt对象使用Qt文档。

要设置文字,您可以使用setText('blabla')

http://doc.qt.io/qt-5/qtextedit.html#setText

它既支持HTML格式文本,也支持纯文本。

要在末尾附加文本,我要做类似的事情

    txt.moveCursor(QtGui.QTextCursor.End)
    txt.insertHtml(data + '<br>')
    txt.moveCursor(QtGui.QTextCursor.End)

如果我想使用HTML,否则.append('blabla')也可以使用。

移动光标部分不需要附加,但这很好,因为随着您不断添加内容,它将使您的文本框向下滚动。

答案 1 :(得分:0)

这是其他遇到类似问题的人的答案。 LtWorf回答了我的问题,他发送的文档中也有答案。显然,我只是为自己回答了这个问题,所以我不是专家,但是我将以针对像我这样的新手白痴的方式回答。在我编写的错误代码中

self.plainTextEdit.append(x)

我无法告诉计算机需要什么类型的文本。相反,我需要编写类似下面的代码的代码,告诉它将输出追加为纯文本。

self.plainTextEdit.appendPlainText(x)

或者我可以告诉计算机将输出附加为HTML。

self.plainTextEdit.appendHtml(x)