Я создал окно в PyQt 5, в котором, нажав кнопку оптимизации, программа читает файл Gurobi-model.lp (щелкните здесь, чтобы получить файл) и оптимизирует его с помощью программного обеспечения Gurobi. Как я могу отобразить журналы Gurobi в QTextBrowser?
Я нашел в Gurobi некоторые функции, такие как OutputFlag, LogFile и LogToConsole. Могут ли эти функции быть полезными?
Для тех, кто не знаком с Gurobi, оптимизатор Gurobi использует Python в качестве интерфейса и создает несколько журналов, позволяющих отслеживать ход оптимизации. Эти логи печатаются в консоли во время оптимизации, и почему-то, отвечая на мой вопрос, не нужно ничего знать о Гуроби.
В приведенном ниже коде я нашел способ показать журналы в 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()