0

您好,我在 python 和 pyqt4 中编写了一个程序来控制放大器。该程序与串行端口(pyserial 模块)连接。现在我想修改我的版本,使它可以在其他平台和计算机上使用。我已经加载并添加了一个包含所有串行端口的列表到 ComboBox。因为每次启动程序时选择和连接端口都很费力,我希望 ComboBox 保存最后选择的端口并连接到它。我是 Python 新手,不知道。如何保存和加载 ComboBox 中选择的最后一个字符串?

4

1 回答 1

0

我能想到的只是做一些文件 I/O。

说,你有一个文件 index.txt 。您需要存储索引,因此,每次激活组合框时,您以读取模式打开文件,读取里面的数字,关闭文件,将整数更改为当前项目的索引,以写入模式打开文件,将新整数写入其中并再次关闭文件。这样,您始终将最新选择的项目的索引存储在文件中。

然后,在启动时,您再次打开文件并读取其中的字符串。使用 .setCurrentIndex() 将组合框的当前索引设置为该字符串的索引。这将自动连接到组合框的 currentIndexChanged() 信号。

这是一个示例程序:

import sys
from PyQt4 import QtGui, QtCore

class Main(QtGui.QMainWindow):

    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.initUI()

    def initUI(self):

        centralwidget = QtGui.QWidget()

        self.combo = QtGui.QComboBox(self)

        self.combo.addItem("Serial 1")
        self.combo.addItem("Serial 2")
        self.combo.addItem("Serial 3")
        self.combo.addItem("Serial 4")
        self.combo.addItem("Serial 5")

        self.combo.currentIndexChanged[str].connect(self.Show)

        f = open("index.txt","rt")
        index = f.read()
        f.close()

        self.combo.setCurrentIndex(int(index))

        grid = QtGui.QGridLayout()

        grid.addWidget(self.combo,0,0)

        centralwidget.setLayout(grid)

        self.setGeometry(300,300,280,170)

        self.setCentralWidget(centralwidget)

    def Show(self, item):

        print("Connected to: ",item)

        f = open("index.txt","rt")
        index = f.read()
        f.close()

        index = self.combo.currentIndex()

        f = open("index.txt","wt")
        f.write(str(index))
        f.close()

def main():
    app = QtGui.QApplication(sys.argv)
    main= Main()
    main.show()

    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

注意:为此,您需要在与您的程序相同的目录中创建一个包含数字的 index.txt 文件。

于 2013-08-15T02:32:01.210 回答