【发布时间】:2019-02-12 05:18:57
【问题描述】:
我在 PyQt 5 中构建了一个窗口,通过单击“优化”按钮,程序读取“Gurobi-model.lp”文件(click here to get the file),并借助 Gurobi 软件对其进行优化。如何在 QTextBrowser 上显示 Gurobi 的日志?
我在 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()
【问题讨论】:
标签: python python-3.x pyqt5 gurobi