PyQt自动重复表单
我现在正在把一个老旧的VBA/Microsoft Access应用程序迁移到Python和PyQt上。迁移逻辑部分我没有遇到什么问题,大部分表单也都很简单。不过,我在应用程序最重要的部分——主数据输入表单上遇到了麻烦。
这个表单基本上就是一排文本框,对应数据库里的字段。用户只需在一个字段里输入数据,按下Tab键跳到下一个字段,然后继续输入。当他输入到一行的末尾,再按一次Tab键,表单会自动为他创建一个新的空白行,让他可以继续输入数据。(实际上,它会在当前新记录的下方显示一个“空白”行,用户也可以点击这个空白行开始输入新的记录。)同时,它还允许用户上下滚动,查看他正在处理的所有记录。
在PyQt中有没有办法复制这种功能?我还没找到简单的方法让Qt做到这一点。Access会自动处理这些;在表单外不需要任何代码。在PyQt中做到这一点是不是也那么简单,或者说接近简单,还是说这需要从头编程?
1 个回答
3
你可以看看QSqlTableModel和QTableView这两个对象。QSqlTableModel提供了一种关系表的抽象,可以在Qt的视图类中使用,比如QTableView。你描述的功能其实只需要用这两个类就能实现,花费的精力也不算太多。
QSqlTableModel还支持对数据库字段的编辑。
我猜唯一需要你手动实现的功能是,在表格的末尾添加一个“TAB”键,以便创建新的一行,如果你想保留这个功能的话。
我对Access了解不多,但使用ODBC-SQL驱动程序,你应该可以在开发或测试中使用实际的Access数据库。这里有一些旧的信息在这里,你可能还想考虑转向Sqlite、Mysql或其他真正的SQL数据库。