如何使pyuic4自动将标签设置为“MainWindow”?

2 投票
1 回答
759 浏览
提问于 2025-04-15 18:21

在我给这些标签上方的网格里添加了一个新的标签和文本编辑框后,当我用pyuic4生成ui.py文件时,它为很多不同的标签生成了以下几行代码,这导致出现了参数不足的错误。

self.tcTab.setTabText(self.tcTab.indexOf(self.tab_6),) 

不过在我做这些更改之前,.ui文件生成得很好。

self.tcTab.setTabText(self.tcTab.indexOf(self.tab_6), QtGui.QApplication.translate("MainWindow", " ", None, QtGui.QApplication.UnicodeUTF8))

这段代码运行得很好,如果我把它编辑到ui.py文件里,我的更改也能正常工作。但是我想知道,如何才能在使用pyuic4时自动做到这一点。因为我了解到,通常不应该手动编辑ui.py文件。谢谢。

补充:我更新了一切,但没有效果。基本上,只要我对旧的UI文件做任何更改,如果我用pyuic4处理它,就会出现这个问题。如果这有关系的话,qtDesigner中的currentTabText下的可翻译选项是勾选的。这个问题发生在.py文件的这个函数里:

def retranslateUi(self, MainWindow):

    #these are incorrect ones pyuic4 generates
    self.tcTab.setTabText(self.tcTab.indexOf(self.tab_6), )
    self.tcTab.setTabText(self.tcTab.indexOf(self.tab_9), )

    #these are the correct lines it used to generate
   self.tcTab.setTabText(self.tcTab.indexOf(self.tab_6),QtGui.QApplication.translate("MainWinow", " ", None, QtGui.QApplication.UnicodeUTF8))
   self.tcTab.setTabText(self.tcTab.indexOf(self.tab_9), QtGui.QApplication.translate("MainWindow", " ", None, QtGui.QApplication.UnicodeUTF8))

补充2:即使我在qtDesigner中打开.ui文件,点击一下,甚至不做任何修改就保存,然后再用pyuic4,它也会生成错误的代码。

1 个回答

1

太棒了!!

在使用设计工具时,标签的 setTabText 字段必须有内容。结果发现,界面实际上是把空格当作标签文本使用的,每次打开设计工具时,它就会把这些空格去掉。所以,如果你在修改后再次把标签文本设置为空格,它就能正常工作了。

撰写回答