0

pyQTで問題が発生しています。そこで、QTabWidgetを含むデザイナーとのグラフィカルインターフェイスを作成しました。関数の実行中にタブを非表示にしたり表示したりしたいのです。すべてのタブを削除して後で追加するという1つの解決策を見つけました。タブが2つしかない場合:

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.

助言がありますか?

4

1 に答える 1

2

mainwindow オブジェクトまたは任意のウィジェットで必要なすべてのタブを宣言できます。例:

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)

同じタブを何度でも呼び出すことができます。この方法は非常にクリーンでシンプルだと思います。これがあなたのニーズに合わない場合は、お知らせください。

于 2011-11-28T16:37:27.683 に答える