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