繁体   English   中英

使用旧设置启动应用程序

[英]launching the application with the old settings

我需要在启动时勾选复选框,绘制图表,并写入汇率,就像应用程序关闭时一样。 这是来自 pyqt 的代码:

这是应恢复其数据的代码的一部分:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from ui import Ui_MainWindow
from py_currency_converter import convert
import json
import pyqtgraph as pg
from graph import Graph


class Currency(QtWidgets.QMainWindow):
    def __init__(self):
        super(Currency, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.chkv()
        self.g = Graph()

    def chkv(self):
        self.ui.dollar.stateChanged.connect(lambda: self.checked_value())
        self.ui.euro.stateChanged.connect(lambda: self.checked_value())
        self.ui.funt.stateChanged.connect(lambda: self.checked_value())
        self.ui.aud.stateChanged.connect(lambda: self.checked_value())
        self.ui.lev.stateChanged.connect(lambda: self.checked_value())
        self.ui.frank.stateChanged.connect(lambda: self.checked_value())

    pend = pg.mkPen(color=(255, 0, 0))
    pene = pg.mkPen(color=(0, 255, 0))
    penf = pg.mkPen(color=(0, 0, 255))
    pena = pg.mkPen(color=(255, 0, 255))
    penl = pg.mkPen(color=(255, 255, 0))
    penfr = pg.mkPen(color=(0, 255, 255))

    def checked_value(self):
        if self.ui.dollar.isChecked():
            self.ui.curslbl1.setText("1 USD = " + json.dumps(convert(base='USD', amount=1, to=['RUB']))[8:12] + " RUB")
            self.ui.widget.plot(self.g.month_dollar_data, self.g.month_dollar_curs, pen=self.pend)
            self.ui.widget_2.plot(self.g.year_dollar_data, self.g.year_dollar_curs, pen=self.pend)
        else:
            self.ui.curslbl1.setText("")
        if self.ui.euro.isChecked():
            self.ui.curslbl2.setText("1 EUR = " + json.dumps(convert(base='EUR', amount=1, to=['RUB']))[8:12] + " RUB")
            self.ui.widget.plot(self.g.month_euro_data, self.g.month_euro_curs, pen=self.pene)
            self.ui.widget_2.plot(self.g.year_euro_data, self.g.year_euro_curs, pen=self.pene)
        else:
            self.ui.curslbl2.setText("")
        if self.ui.funt.isChecked():
            self.ui.curslbl3.setText("1 GBP = " + json.dumps(convert(base='GBP', amount=1, to=['RUB']))[8:12] + " RUB")
            self.ui.widget.plot(self.g.month_funt_data, self.g.month_funt_curs, pen=self.penf)
            self.ui.widget_2.plot(self.g.year_funt_data, self.g.year_funt_curs, pen=self.penf)
        else:
            self.ui.curslbl3.setText("")
        if self.ui.aud.isChecked():
            self.ui.curslbl4.setText("1 AUD = " + json.dumps(convert(base='AUD', amount=1, to=['RUB']))[8:12] + " RUB")
            self.ui.widget.plot(self.g.month_aud_data, self.g.month_aud_curs, pen=self.pena)
            self.ui.widget_2.plot(self.g.year_aud_data, self.g.year_aud_curs, pen=self.pena)
        else:
            self.ui.curslbl4.setText("")
        if self.ui.lev.isChecked():
            self.ui.curslbl5.setText("1 BGN = " + json.dumps(convert(base='BGN', amount=1, to=['RUB']))[8:12] + " RUB")
            self.ui.widget.plot(self.g.month_lev_data, self.g.month_lev_curs, pen=self.penl)
            self.ui.widget_2.plot(self.g.year_lev_data, self.g.year_lev_curs, pen=self.penl)
        else:
            self.ui.curslbl5.setText("")
        if self.ui.frank.isChecked():
            self.ui.curslbl6.setText("1 CHF = " + json.dumps(convert(base='CHF', amount=1, to=['RUB']))[8:12] + " RUB")
            self.ui.widget.plot(self.g.month_frank_data, self.g.month_frank_curs, pen=self.penfr)
            self.ui.widget_2.plot(self.g.year_frank_data, self.g.year_frank_curs, pen=self.penfr)
        else:
            self.ui.curslbl6.setText("")


app = QtWidgets.QApplication([])
application = Currency()
application.show()

sys.exit(app.exec())

我真的不知道我到底需要做什么,如果你能帮助我,我将不胜感激

您需要做的是收集所有需要保存到某种持久结构化容器中的数据,并在应用程序触发关闭事件时将其保存在一致的位置,然后在应用程序运行时查看相同位置以重新加载以前的数据。

我将使用一个非常简单的示例来保存一些文本:

class Currency(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.textEdit = QPlainTextEdit()
        self.setCentralWidget(self.textEdit)

现在,一旦我添加了一些段落或其他内容,如果我希望它在下次启动应用程序时仍然存在,那么信息需要保存在应用程序关闭和再次启动之间的某个位置。

为此,我将使用json文件,但.csv文件、数据库或纯文本文件也同样适用。 它只需要存储在一个一致的位置,这样当你的应用程序再次启动时它就知道去哪里找。

STORAGE_PATH = "/home/.MyAppName/data.json"

class Currency(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.textEdit = QPlainTextEdit()
        self.setCentralWidget(self.textEdit)
        self.loadData()

    def loadData(self):
        if os.path.exists(STORAGE_PATH):
            data = json.load(open(STORAGE_PATH))
            self.textEdit.setPlainText(data['text'])

    def closeEvent(self, event):
        text = self.textEdit.toPlainText()
        data = {"text": text}
        with open(STORAGE_PATH, "wt") as jsonfile:
            json.dump(data, jsonfile)   
        return super().closeEvent(event)

要在您的应用程序中完成这项工作,您需要做的就是收集不同的 plot 值并将它们添加到某种结构化存储容器中,然后在启动应用程序时重新绘制它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM