Crear un listbox desde un txt y seleccionar una linea
-
Hola a todos, me he decidido a exponeros mi "problema", hasta ahora hacia toda la representación grafica con tkinter desde python, pero ahora me he puesto con Qt y la verdad estoy muy perdido, a si a ver si podéis ayudarme a resolver esta cuestión:
Necesito hacer una pantalla que lea las lineas de un fichero txt y que pueda seleccionar una linea de las que salgan, puede que haya una o 10, no sera muy largo, el formato seria como ejemplo:
1-Ejemplo de linea 1-1.29-1.615
2-Ejemplo de linea 2-2.0-1.15
Solo necesito saber que linea a sido seleccionada, en este caso, la 1 o la 2.
Por lo que veo qt se programa con c++, y tengo una duda si esta selección podre pasarla a python.Pues nada, a ver si la gente que por lo que he visto sois unos cracks, podéis echarme una mano.
Saludos.
-
Hola
Qt sí puede usarse con python, pero la verdad no tengo ni idea de donde obtener información ni de ningún manual ni nada, pero si buscas un poco seguro no te costará encontrar.
Lo que necesitas no es complicado de hacer, el componente o widget que necesitas es un QCombobox.
Puedes ir leyendo el archivo y añadir cada una de las líneas del archivo al QComboBox.
Y luego puedes usar la señal currentIndexChanged(int index) si solo te interesa saber el elemento que se seleccionó o currentIndexChanged(const QString &text) si quieres obtener el texto seleccionado.
Es fácil, pero tienes que tener unas bases de como funciona Qt. Repásate la documentación. También hay mucho material por youtube, incluso en español.
Un saludo
-
Hola!
Te sirve algo así?
from PyQt5.QtWidgets import ( QWidget, QComboBox, QVBoxLayout, QApplication ) class Widget(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent) box = QVBoxLayout(self) self.combo = QComboBox() self._populate_combo() self.combo.currentIndexChanged.connect( self.__on_current_index_changed) box.addWidget(self.combo) def __on_current_index_changed(self): print(self.combo.currentText()) def _populate_combo(self): with open('archivo.txt') as f: content = f.read() self.combo.addItems(content.splitlines()) if __name__ == "__main__": import sys app = QApplication([]) w = Widget() w.show() sys.exit(app.exec_())
Saludos!