从PyQt5导入QtCore、QtGui、QtWidgets从PyQt5.QtWidget导入QApplication、QMainWindow、QPushButton、QPlainTextEdit、QVBoxLayout、QWidget从PyQt5.QtCore导入QProcess导入子进程导入sys导入时间导入日期时间
current_time = datetime.datetime.now() current_time = current_time.strftime('%Y-%m-%d %H:%M')
类TextUpdate():
def watch_list(self):
self = open(r"C:\Users\Administrator\Desktop\stat_arb\gui\watchlist.txt", 'r').read()
return self
def order_history(self):
self = open(r"C:\Users\Administrator\Desktop\stat_arb\gui\orderhistory.txt", 'r').read()
return self
def re_turn(self):
self = open(r"C:\Users\Administrator\Desktop\stat_arb\gui\return.txt", 'r').read()
return self
def net_value(self):
self = open(r"C:\Users\Administrator\Desktop\stat_arb\gui\netvalue.txt", 'r').read()
return self
类Ui_MainWindow(object):def setupUi(self,MainWindow):MainWindow.setObjectName("MainWindow") MainWindow.resize(915,413) MainWindow.setStyleSheet(“背景颜色: rgb( 42,42,42)")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.p = None
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setStyleSheet(
"background-color: rgb(42, 42 , 42)")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.frame_2 = QtWidgets.QFrame(self.frame)
self.frame_2.setGeometry(QtCore.QRect(20, 30, 411, 221))
self.frame_2.setStyleSheet(
"background-color: #202020;\n"
"border-radius: 12px")
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.watch_text = QtWidgets.QPlainTextEdit(self.frame_2)
self.watch_text.setGeometry(QtCore.QRect(10, 40, 391, 121))
self.watch_text.setMouseTracking(False)
self.watch_text.setStyleSheet(
"border:0;\n"
"font-size: 11px;\n"
"color: #9e9e9e")
self.watch_text.setBackgroundVisible(False)
self.watch_text.setObjectName("watch_text")
self.watch_label = QtWidgets.QPlainTextEdit(self.frame_2)
self.watch_label.setGeometry(QtCore.QRect(10, 10, 391, 31))
self.watch_label.setStyleSheet(
"border:0;\n"
"font-size: 10px;\n"
"font-weight: bold;\n"
"color: #ffffff")
self.watch_label.setObjectName("watch_label")
self.start_button = QtWidgets.QPushButton(self.frame_2)
self.start_button.setGeometry(QtCore.QRect(100, 180, 221, 28))
self.start_button.setStyleSheet(
"background-color: #61ac3e;\n"
"border-radius: 8px;\n"
"font-size: 10px;\n"
"font-weight: bold;\n"
"color: #ffffff")
self.start_button.setObjectName("start_button")
self.frame_3 = QtWidgets.QFrame(self.frame)
self.frame_3.setGeometry(QtCore.QRect(20, 260, 411, 101))
self.frame_3.setStyleSheet(
"background-color: #202020;\n"
"border-radius: 12px")
self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_3.setObjectName("frame_3")
self.output_text = QtWidgets.QPlainTextEdit(self.frame_3)
self.output_text.setGeometry(QtCore.QRect(10, 40, 391, 51))
self.output_text.setMouseTracking(False)
self.output_text.setStyleSheet(
"border:0;\n"
"font-size: 11px;\n"
"color: #9e9e9e;")
self.output_text.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.output_text.setBackgroundVisible(False)
self.output_text.setObjectName("output_text")
self.output_label = QtWidgets.QPlainTextEdit(self.frame_3)
self.output_label.setGeometry(QtCore.QRect(10, 10, 391, 31))
self.output_label.setStyleSheet("border:0;\n"
"font-size: 10px;\n"
"font-weight: bold;\n"
"color: #ffffff")
self.output_label.setObjectName("output_label")
self.frame_4 = QtWidgets.QFrame(self.frame)
self.frame_4.setGeometry(QtCore.QRect(450, 140, 411, 221))
self.frame_4.setStyleSheet(
"background-color: #202020;\n"
"border-radius: 12px")
self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_4.setObjectName("frame_4")
self.order_text = QtWidgets.QPlainTextEdit(self.frame_4)
self.order_text.setGeometry(QtCore.QRect(10, 40, 391, 161))
self.order_text.setMouseTracking(False)
self.order_text.setStyleSheet(
"border:0;\n"
"font-size: 11px;\n"
"color: #9e9e9e")
self.order_text.setBackgroundVisible(False)
self.order_text.setObjectName("order_text")
self.order_label = QtWidgets.QPlainTextEdit(self.frame_4)
self.order_label.setGeometry(QtCore.QRect(10, 10, 391, 31))
self.order_label.setStyleSheet(
"border:0;\n"
"font-size: 10px;\n"
"font-weight: bold;\n"
"color: #ffffff")
self.order_label.setObjectName("order_label")
self.frame_5 = QtWidgets.QFrame(self.frame)
self.frame_5.setGeometry(QtCore.QRect(450, 30, 411, 101))
self.frame_5.setStyleSheet(
"background-color: #202020;\n"
"border-radius: 12px")
self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_5.setObjectName("frame_5")
self.nav_text = QtWidgets.QPlainTextEdit(self.frame_5)
self.nav_text.setGeometry(QtCore.QRect(10, 40, 181, 41))
self.nav_text.setMouseTracking(False)
self.nav_text.setBackgroundVisible(False)
self.nav_text.setObjectName("nav_text")
self.nav_text.setStyleSheet(
"border:0;\n"
"font-size: 24px;\n"
"color: #1a62dd")
self.nav_label = QtWidgets.QPlainTextEdit(self.frame_5)
self.nav_label.setGeometry(QtCore.QRect(10, 10, 181, 31))
self.nav_label.setStyleSheet(
"border:0;\n"
"font-size: 10px;\n"
"font-weight: bold;\n"
"color: #ffffff")
self.nav_label.setObjectName("nav_label")
self.return_text = QtWidgets.QPlainTextEdit(self.frame_5)
self.return_text.setGeometry(QtCore.QRect(210, 40, 181, 41))
self.return_text.setMouseTracking(False)
self.return_text.setBackgroundVisible(False)
self.return_text.setObjectName("return_text")
self.return_text.setStyleSheet(
"border:0;\n"
"font-size: 24px;\n"
"color: #9e9e9e")
self.return_label = QtWidgets.QPlainTextEdit(self.frame_5)
self.return_label.setGeometry(QtCore.QRect(210, 10, 181, 31))
self.return_label.setStyleSheet(
"border:0;\n"
"font-size: 10px;\n"
"font-weight: bold;\n"
"color: #ffffff")
self.return_label.setObjectName("return_label")
self.gridLayout.addWidget(self.frame, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
self.timer = QtCore.QTimer()
self.timer.start(5)
self.timer.timeout.connect(lambda:self.watch_text.setPlainText(TextUpdate().watch_list()))
self.timer.timeout.connect(lambda:self.order_text.setPlainText(TextUpdate().order_history()))
self.timer.timeout.connect(lambda:self.return_text.setPlainText(TextUpdate().re_turn()))
self.timer.timeout.connect(lambda:self.nav_text.setPlainText(TextUpdate().net_value()))
self.start_button.pressed.connect(self.start_process)
self.output_text.setReadOnly(True)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.watch_label.setPlainText(_translate("MainWindow", " WATCHLIST"))
self.start_button.setText(_translate("MainWindow", "START"))
self.output_label.setPlainText(_translate("MainWindow", " OUTPUT"))
self.order_label.setPlainText(_translate("MainWindow", " ORDER HISTORY"))
self.nav_label.setPlainText(_translate("MainWindow", " NET VALUE"))
self.return_label.setPlainText(_translate("MainWindow", " %RETURN"))
def message(self, s):
self.output_text.appendPlainText(s)
def start_process(self):
if self.p is None: # No process running.
self.message(f'[STATUS] {current_time} Initializing process...')
self.p = QProcess() # Keep a reference to the QProcess (e.g. on self) while it's running.
self.p.readyReadStandardOutput.connect(self.handle_stdout)
self.p.readyReadStandardError.connect(self.handle_stderr)
self.p.stateChanged.connect(self.handle_state)
self.p.finished.connect(self.process_finished) # Clean up once complete.
# environment path,script.py path
self.p.start(r'C:\Users\Administrator\PycharmProjects\pythonProject\venv\Scripts\python.exe',
[r"C:\Users\Administrator\Desktop\stat_arb\31b_aug.py"])
def handle_stderr(self):
data = self.p.readAllStandardError()
stderr = bytes(data).decode("utf8")
self.message(stderr)
def handle_stdout(self):
data = self.p.readAllStandardOutput()
stdout = bytes(data).decode("utf8")
self.message(stdout)
def handle_state(self, state):
states = {
QProcess.NotRunning: 'Not running...',
QProcess.Starting: 'Starting...',
QProcess.Running: 'Running...',
}
state_name = states[state]
self.message(f'[STATUS] {current_time} {state_name}')
def process_finished(self):
self.message("Process finished.")
self.p = None
def get_termi_futu():subprocess.call("taskkill /F /IM FutuOpenD.exe")打印(‘断开连接’,current_time,‘连接状态’。(交易帐户断开。)
如果将 ==命名为"main":导入sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() app.exec_() get_termi_futu() get_termi_futu()
只有在重新启动GUI时,%return才会更新字体颜色。
发布于 2022-09-01 02:32:19
找出它,并添加如下:
def font_color():
if float(TextUpdate().re_turn()) > 0:
self = ("border:0;\n"
"font-size: 24px;\n"
"color: #23df0a")
return self
else:
self = (
"border:0;\n"
"font-size: 24px;\n"
"color: #e41a13")
return self
self.timer = QtCore.QTimer()
self.timer.start(5)
self.timer.timeout.connect(lambda:self.return_text.setStyleSheet(font_color()))
https://stackoverflow.com/questions/73556547
复制相似问题