PyQt 5でtextBrowserがprint文出力を表示する簡単な方法を詳しく説明します。
4794 ワード
pythonプログラムを開発して大きなデータ量を処理する時、print文を使って出力結果を見てみます。データを長時間処理する場合はprintで進捗状況を出力します。PyQt 5を使ってUIインタフェースを開発した後、本能的に自分でデバッグしたpyコードの中のprintをUIのtextBrowserに出力したいです。CSDNで多くの結果を調べましたが、一般的にはマルチスレッドを使います。マルチスレッドについてはあまり研究していないので、融通の効かない方法を採用しました。
Uiインターフェースプログラム(Ui_startaml.pyではtextBrowserを設定してプログラム出力情報を表示し、自分でコードを定義し、以降はpyプログラムでは一般的にprintの場所をui.print()に変更して呼び出すとOKです。
Uiインターフェースプログラム(Ui_startaml.pyではtextBrowserを設定してプログラム出力情報を表示し、自分でコードを定義し、以降はpyプログラムでは一般的にprintの場所をui.print()に変更して呼び出すとOKです。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'D:\aml\startaml.ui'
# Created by: PyQt5 UI code generator 5.11.3
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(490, 390)
MainWindow.setMaximumSize(QtCore.QSize(490, 390))
font = QtGui.QFont()
#.......
#........ ....
#........
self.textBrowser = QtWidgets.QTextBrowser(self.centralWidget)
self.textBrowser.setGeometry(QtCore.QRect(10, 109, 471, 221))
self.textBrowser.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily(" ")
self.textBrowser.setFont(font)
self.textBrowser.setObjectName("textBrowser")
#..........
def printf(self,mypstr):
###
print , c printf
Mypstr:
###
self.textBrowser.append(mypstr) #
self.cursor=self.tetxBrowser.textCursor()
self.tetxBrowser.moveCursor(self.cursor.End) # ,
QtWidgets.QApplication.processEvents() # ,
他のpyプログラムはどうやってclass Ui_を呼び出しますか?MainWindow(object)類は、例えば:
# -*- coding: utf-8 -*-
"""
Module implementing MainWindow.
ui , .py 。 runget.py
"""
from PyQt5 import QtWidgets
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow
from Ui_startaml import Ui_MainWindow
import sys
sys.path.append('src')
from runget import run_get # , print
class MainWindow(QMainWindow, Ui_MainWindow):
"""
Class documentation goes here.
"""
def __init__(self, parent=None):
"""
Constructor
@param parent reference to the parent widget
@type QWidget
"""
super(MainWindow,self).__init__(parent)
self.setupUi(self)
self.graphicsPsw.mousePressEvent=self.chpsw_clicked # mouse 。
def chpsw_clicked(self, e):
"""
change psw
"""
print('change psw record')
def _runget(self,ui): # py 。
run_get(ui) # runget.py 。
@pyqtSlot()
def on_pushBut_get_clicked(self):
"""
Slot documentation goes here.
,
"""
# TODO: not implemented yet
self.printf("
, !")
self._runget(ui) # ui
# ........... .....
if __name__ == "__main__":
# Ui , ui , OK
app = QtWidgets.QApplication(sys.argv)
app.aboutToQuit.connect(app.deleteLater)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())
run_get(ui)は単独のデバッグに成功したrungett.pyプログラムのメインエントランスです。以下のように簡略化されています。
#!C:\\Anaconda3\\python.exe
# -*- coding: utf-8 -*-
runget.py
"""
Created on Wed Mar 13 15:32:50 2019
@author: yuce_hz 2019 3 11 ,runget.py
""""
import re
import os
import time
import requests
from requests.exceptions import RequestException
from lxml import etree
#..........
#...... ....
#........
def run_get(ui):
#1 ,
glob_var_chrome() #
#2.
if (login_nsso(gl_url,gl_user,gl_pass)!='OK'):
#print(" , , , 。") # print
ui.printf(" , , , 。" # ui printf
browser.quit()
#............ .........
#.....................
if __name__=='__main__':
run_get() # ui , run_get(ui), UI 。
ここで、PyQt 5のtextBrowserがprint文の出力を表示する簡単な方法についての記事を紹介します。PyQt 5 textBrowserに関する詳細な説明は以前の文章を検索してください。また、下記の関連記事をご覧ください。これからもよろしくお願いします。