我正在使用PyQt4设计一个(希望)简单的GUI应用程序,我正在努力使其可扩展。简而言之,用户输入一些基本信息并将其发送到n个队列中的一个(实现等待列表)。这些n个队列(QTableviews)中的每一个都是相同的,并且每个队列都具有用于弹出,删除和重新排列其队列的控件。这些以及一些标签等形成“模块”。目前我的应用程序硬编码为4个队列模块,因此有名为btn_table1_pop,btn_table2_pop ...等的元素;每个模块小部件的四个副本。如果您总是假设您的客户有四个需要等待名单的人,那么这显然不是非常好的UI设计!我希望能够轻松修改这个程序,这样8个人就可以使用它,或者3个人可以在没有大量无用屏幕的情况下使用它!
编写我的应用程序的真正天真的解决方案是复制每个模块的代码,但这非常麻烦,不可维护,并且我的应用程序总是限制为四个队列。更好的想法是为每个设置索引的按钮编写函数并调用实现公共逻辑的函数,但我仍然硬编码为4,因为分支逻辑和调用函数仍然必须考虑名称的元素。如果有一种方法可以“矢量化”元素的名称,那么我就可以编写
btn_table[index]_pop.setEnabled(False)
...我可以消除这个分支逻辑并真正压缩我的代码。但是我在Python / PyQt上太新了,知道这是否是1)甚至可能吗?或者2)如何进行它/如果这是偶然的方式?
再次感谢,SO。
答案 0 :(得分:0)
如果有人感兴趣,我可以使用dummybutton = getattr(self,'btn_table {}'。format(i))并在dummybutton上调用按钮的方法。