2013-08-13 4 views
0

Привет, я пишу программу в python и pyqt4 для управления усилителем. Программа подключается к последовательному порту (pyserial module). Теперь я хочу изменить свою версию, чтобы ее можно было использовать на других платформах и компьютерах. Я уже загрузил и добавил список со всеми последовательными портами в ComboBox. Поскольку из-за усталости выбирать и подключать порт каждый раз, когда я запускаю программу, я хочу, чтобы ComboBox сохранил последний выбранный порт и подключился к нему. Я новичок в Python и понятия не имею. Как сохранить и загрузить последнюю строку, выбранную в ComboBox?Как сохранить и загрузить текст в ComboBox с помощью Python?

ответ

0

Все, что я могу придумать, это сделать некоторые файлы ввода-вывода.

Скажем, у вас есть файл index.txt. Вам нужно будет сохранить индекс, поэтому каждый раз, когда поле со списком активируется, вы открываете файл в режиме чтения, читаете номер внутри, закрываете файл, меняете целое число на индекс текущего элемента, открываете файл в режиме записи , напишите новое целое число и закройте файл снова. Таким образом, у вас всегда есть индекс последнего выбранного элемента, хранящийся в файле.

Затем при запуске вы снова открываете файл и читаете строку внутри. Вы устанавливаете текущий индекс combobox в значение этой строки, используя .setCurrentIndex(). Это автоматически подключится к сигналу currentIndexChanged() combo box.

Вот пример программы:

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 файл с номером в нем, в том же каталоге, что и ваша программа.

+0

Thank u. Я решил это. Я создал .txt-файл с последними рабочими портами, и каждый раз, когда я запускаю программу, он просматривает каждую строку файла txt и пытается подключиться. с командой try - except – user2677337

Смежные вопросы