2011-11-28 46 views
0

我正面臨pyQT的一個問題。 所以我創建了一個包含QTabWidget的設計器的圖形界面。 事情是我想隱藏和顯示標籤時,我的功能正在運行。我發現了一個解決方案,包括刪除所有選項卡並稍後添加它們。 可以說,我只有兩個選項卡:在QTabWidget(PyQT)中添加已刪除的選項卡

removedTab = self._application.getAlgorithmGUI().getWidget('tabWidget_Verification').widget(1) 
self._application.getAlgorithmGUI().getWidget('tabWidget_Verification').removeTab(1) 

當我稍後再嘗試添加該刪除選項卡,我的程序崩潰。

self._application.getAlgorithmGUI().getWidget('tabWidget_Verification').addTab(removedTab,QString.fromUtf8("TabRemoved")) 

這是我的錯誤信息:

QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread 
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread 
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread 
QCoreApplication::sendPostedEvents: Cannot send posted events for objects in another thread 
<unknown>: Fatal IO error 11 (Ressource temporairement non disponible) on X server :0.0. 

有什麼建議?

+0

其實它不夠清楚。你爲什麼「刪除所有選項卡並稍後添加它們」?你爲什麼不聲明你需要的所有選項卡,並在需要時調用它們,並在不再需要它們時將它們從索引中刪除? –

+0

首先,我只想隱藏一些標籤並在我的功能的精確時刻顯示它們。由於沒有隱藏/顯示選項卡的方法,我發現該解決方案可以刪除我在.ui中創建的選項卡(不刪除它們)。 – NicoCati

回答

2

你可以聲明你在主窗口的對象或任何窗口小部件所需要的所有選項卡,你有: 例:

self.tab = QtGui.QWidget() 
self.tab.setObjectName(_fromUtf8("tab")) 

而且你可以指定窗口小部件的標籤,通常即使你沒叫還有addTab()方法。 例如:

self.lineEdit = QtGui.QLineEdit(self.tab) 

只要有必要,您可以顯示您的選項卡。 例:

self.tabWidget.addTab(self.tab, "Label") 

並以同樣的方式,你也可以再次刪除它,從它的索引號。 例:

self.tabWidget.removeTab(3) 

同樣的標籤,可以象你想被稱爲多次。 我認爲這種方式非常乾淨簡單。 如果這不符合您的需求,請讓我知道。

+0

嗯,事情是我必須在.ui文件中分別構建我的小部件。所以這就是爲什麼我需要在運行我的功能之前創建所有的選項卡。 不管怎樣,我想你的解決方案,但我得到這個消息: – NicoCati

+0

QCoreApplication :: sendPostedEvents:不能發送發佈事件的對象在另一個線程 QCoreApplication :: sendPostedEvents:不能發送的對象發佈的事件在另一個線程 QCoreApplication :: sendPostedEvents :無法發送另一個線程中的對象的發佈事件 QObject :: setParent:無法設置父項,新父項在不同線程中 QCoreApplication :: sendPostedEvents:無法發送另一個線程中的對象的發佈事件 – NicoCati

+0

QCoreApplication :: sendPostedEvents:無法發送在另一個線程中發佈對象的事件 :X服務器上的致命IO錯誤11(需要臨時解決方法):0.0。 我有點失落。 :/ – NicoCati

相關問題