PyQt TabWidget不显示ui或接受setCurrentWidget

时间:2013-11-16 17:48:27

标签: python pyqt qt-creator tabwidget

我一直致力于工作申请,并且遇到了一些困惑。以下代码将成功向我的tabWidget添加一个新选项卡,设置选项卡的标题,加载外部ui,生成文件或在按下两个按钮之一时预览文件,并将设置为当前选项卡从菜单中打开:

def strap6_gui(self): #Create new tab and load TMS6 Strapping UI
    self.strap6 = QtGui.QWidget(self.tabWidget)
    self.tabWidget.addTab(self.strap6, 'TMS6 Tank Strapping')
    uic.loadUi(strap6, self.strap6)
    self.strap6.strap6_generate.clicked.connect(self.strap6_func)
    self.strap6.strap6_previewButton.clicked.connect(self.strap6_prev)
    self.tabWidget.setCurrentWidget(self.strap6)

问题是这样的:下面的代码,从上面复制并略微修改,并没有做到它应该做的。它将打开一个新选项卡并设置标题,但是这个新选项卡不会设置为当前选项卡或加载ui文件:

def txled_gui(self): #Create new tab and load TMS6 Strapping UI
    self.txled = QtGui.QWidget(self.tabWidget)
    self.tabWidget.addTab(self.txled, 'TMS6 Tank Strapping')
    uic.loadUi(txui, self.txled)
    self.txled.strap6_generate.clicked.connect(self.strap6_func)
    self.txled.strap6_previewButton.clicked.connect(self.strap6_prev)
    self.tabWidget.setCurrentWidget(self.txled)

当我处理这个时,我复制了strap6.ui并将其重命名为txui.ui,以便我可以判断该标签是否从文件位置获取信息。文件位置设置为:

strap6 = os.path.abspath('.\UI\strap6_gui.ui')
txui = os.path.abspath('.\UI\txled_gui.ui')

我有一些其他的UI被加载为同一目录中的弹出窗口并以相同的方式调用,所以我知道这不是问题所在。最后,这是运行应用程序时在控制台中显示的错误消息:

IOError: [Errno 22] invalid mode ('rb') or filename: 'C:\\Users\\Seth\\Documents\\TSE\\pythonTesting\\TriadGUI\\UI\txled_gui.ui'

为什么第一个def工作没有失败,但是第二个def是第一个和新设置的副本等等的副本不是吗?

1 个答案:

答案 0 :(得分:1)

我想你会踢自己。

txui中有一个标签,因为你没有逃避反斜杠。

所以你需要:

txui = os.path.abspath(r'.\UI\txled_gui.ui')

或:

txui = os.path.abspath('.\\UI\\txled_gui.ui')