将功能套用至QtextEdit或QPlainTextEdit python pyside2

时间:2018-08-09 12:21:28

标签: python pyside2

我想问你如何在QTextEdit或QPlainTextEdit中打印结果, 我从这里和其他一些站点尝试了一些组合,但没有任何效果, 如果有人能帮助我修复它,我会很高兴

那是我的代码:

from PySide2 import QtCore, QtWidgets
from PySide2.QtWidgets import QMainWindow, QWidget, QLabel, QLineEdit,QPlainTextEdit, QTextEdit, QMessageBox, QApplication
from PySide2.QtWidgets import QPushButton
from PySide2.QtCore import QSize
#from PySide2.QtGui import *
import sys

class Cam_Ext(QMainWindow):


    def __init__(self, Custom):
        QMainWindow.__init__(self, Custom)

        self.setMinimumSize(QSize(700, 900))
        self.setWindowTitle("Print groupes seletionner")

        ###btn1
        self.btn = QtWidgets.QPushButton('Print groupes' , self)
        self.btn.move(180, 100)
        self.btn.resize(350, 40)
        self.btn.setStyleSheet("background-color: rgb(255, 255, 255); font-family: arial; font-size: 17px; font-weight: bold;")
        self.btn.clicked.connect(self.Renommer)

        self.line = QPlainTextEdit(self)
        self.line.setStyleSheet("font-size: 12px; font-weight: bold; ")
        self.line.move(100, 170)
        self.line.resize(500, 400)
        self.line.setText(self.Renommer)
        #self.line.setPlaceholderText(self.Renommer)


        self.show()
    def Renommer(self):
        # -*- coding: utf-8 -*-
        import PhotoScan
        import os
        doc = PhotoScan.app.document
        pr_name = doc.path
        project_name = os.path.split(pr_name)[-1]
        print(project_name)

        groups = doc.chunk.camera_groups
        # print(groups)
        #x = 0
        seg = "SEG01"
        for group in groups:
            # print(group)
            if group.selected:
                print(project_name, "-",group, "-", seg, ";")
                #x += 1
def main():

    global doc
    doc = PhotoScan.app.document

    global app
    app = QtWidgets.QApplication.instance()
    Custom = app.activeWindow()

    dlg = Cam_Ext(Custom)

PhotoScan.app.addMenuItem("Pp/Print groupes seletionner", main)

我必须使用lambda吗?我不知道如何从函数打印结果 在我的文本窗口内,在模式添加下,我想将我的文本保留在其中,并在每次单击QPushButton时在下面添加新内容,请在此窗口中为我提供帮助,我需要更改什么?

如果可以的话,那就是我的印刷品:

    2018-08-09 14:29:54 Error: 'PySide2.QtWidgets.QTextEdit.insertPlainText' called with wrong argument types:
2018-08-09 14:29:54   PySide2.QtWidgets.QTextEdit.insertPlainText(PySide2.QtWidgets.QHBoxLayout)
2018-08-09 14:29:54 Supported signatures:
2018-08-09 14:29:54   PySide2.QtWidgets.QTextEdit.insertPlainText(unicode)

1 个答案:

答案 0 :(得分:1)

您必须使用appendPlainText()在循环中添加文本。

class Cam_Ext(QMainWindow):
    def __init__(self, Custom):
        QMainWindow.__init__(self, Custom)
        ...
        self.btn.clicked.connect(self.Renommer)

        self.line = QPlainTextEdit(self)
        self.line.setStyleSheet("font-size: 12px; font-weight: bold; ")
        self.line.move(100, 170)
        self.line.resize(500, 400)
        self.show()

    def Renommer(self):
        ...
        # uncomment if you want to clean the previous text
        # self.line.clear()
        for group in groups:
            # print(group)
            if group.selected:
                self.line.appendPlainText("{}-{}-{};".format(project_name, group, seg))