Я построил окно в pyqt5, которое, нажав на кнопку «оптимизировать», программа считывает файл «Gurobi-model.lp» (нажмите здесь, чтобы получить файл) и оптимизируетэто с помощью программного обеспечения Gurobi.Как я могу отобразить логи Gurobi на QTextBrowser?
Я нашел некоторые функции в Gurobi, такие как OutputFlag, LogFile, LogToConsole.Однако я много искал и не понимал, могут ли эти функции быть полезными для меня или нет.Кто-нибудь может мне помочь в этом отношении?
Для тех, кто не знаком с Gurobi, оптимизатор Gurobi использует python в качестве интерфейса и создает некоторые журналы, которые позволяют отслеживать ход оптимизации.Эти журналы печатаются в консоли во время оптимизации, и для ответа на мой вопрос не нужно ничего знать о Gurobi.
В приведенном ниже коде я нашел способ показать журналы в QTextBrowser, но журналы отображаются, когда процесс оптимизации полностью завершен.Я хочу, чтобы логи отображались точно во время процесса оптимизации.
import sys
from PyQt5.QtWidgets import *
from gurobipy import *
from io import *
class MyWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
self.pb = QPushButton(self.tr("optimize"))
self.log_text = QTextBrowser()
layout = QVBoxLayout(self)
layout.addWidget(self.pb)
layout.addWidget(self.log_text)
self.setLayout(layout)
self.pb.clicked.connect(self.optimize)
def optimize(self):
f = StringIO()
sys.stdout = StringIO()
self.m = read('Gurobi-model.lp')
self.m.optimize()
self.log_text.append(sys.stdout.getvalue() )
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()