Pregunta

Actualmente estoy tratando de migrar un legado aplicación de VBA / Microsoft Access para Python y PyQt. No he tenido problemas de migración de cualquiera de la lógica, y la mayoría de las formas han sido fáciles, también. Sin embargo, me he pegado a un problema en la parte más importante de la aplicación -. La principal forma de entrada de datos

La forma es básicamente una fila de cuadros de texto correspondientes a los campos de la base de datos. El usuario simplemente introduce datos en a una campos, lengüetas a la siguiente y se repite. Cuando se llega al final de la grabación / fila, él tabs de nuevo, y la forma crea automáticamente una nueva fila en blanco para él para comenzar a introducir los datos de nuevo. (En la actualidad, se muestra una fila "en blanco" por debajo del nuevo registro actual, que el usuario realmente puede hacer clic en para para iniciar una nueva registros también.) También permite al usuario desplazarse hacia arriba y hacia abajo para ver todo el subconjunto actual de registros que está trabajando.

¿Hay una manera de replicar esta funcionalidad en PyQt? No he conseguido encontrar una manera de conseguir Qt para hacer esto fácilmente. El acceso se encarga de ello automáticamente; no se requiere ningún código fuera de la forma. ¿Es tan fácil en PyQt (o incluso cerca), o se trata de algo que va a tener que ser programado desde cero?

¿Fue útil?

Solución

Usted debe mirar en QSqlTableModel, y los objetos QTableView. QSqlTableModel ofrece una abstracción de una tabla relacional que se puede utilizar dentro de las clases de vista de Qt. A QTableView por ejemplo. La funcionalidad que usted describe se puede implementar con un esfuerzo moderado simplemente mediante el uso de estas dos clases.

El QSqlTableModel también es compatible con la edición de campos de bases de datos.

Mi conjetura la única funcionalidad que tendrá que aplicar manualmente es la "pestaña" en el extremo de la mesa para crear una nueva fila si desea mantener eso.

No sé mucho acerca de Access, pero utilizando el controlador ODBC SQL-usted debería ser capaz de utilizar la base de datos de acceso real para su desarrollo o prueba hay alguna información más antigua aquí , es posible que desee considerar la posibilidad de trasladarse a SQLite, MySQL u otra base de datos SQL real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top