2

私はqtにpython guiを持っています。GUIはデザイナーを使用して構築されています。タブが含まれています。プロットを追加したい。私のプロット オブジェクトは、QtCore.QObject を継承するクラス (MyPlot と呼ばれます) です。これを GUI に追加するには、QtGui.QMainWindow から継承するクラス MainWindow 内で簡単に行うことができます。

self.Myplot(self)
self.MyPlot.plot()

しかし、プロットを1つのタブにのみ配置するようにpythonに指示する方法がわかりません。MainWindow内で次のようなことをしなければならないと思います:

self.tab(0).Myplot(self)

しかし、私は正確に何を見つけることができません。誰か手がかりを持っていますか?

ありがとう!

編集:次のコードでデザイナーによって生成された ui ファイルを読み取るタブを作成しようとすると失敗します (まだプロットを追加するのではなく、デザイナーで構築したものをタブに入れようとしています):

import sys
from PyQt4 import QtCore, QtGui, uic


class MyWidget(QtGui.QWidget):
  def __init__(self, parent = None):
    uic.loadUi('mainwindow.ui', self)


class TabWidget(QtGui.QTabWidget):  
  def __init__(self, parent=None):  
    super (TabWidget, self).__init__(parent)  
    self.setTabsClosable(True)  
    self.tabCloseRequested.connect(self.removeTab)
    self.inside = MyWidget()

  def tabInserted(self, index):  
    self.tabBar().setVisible(self.count() > 1)  

  def tabRemoved(self, index):  
    self.tabBar().setVisible(self.count() > 1) 


class MainWindow(QtGui.QMainWindow):
  def __init__(self,parent=None):
    QtGui.QMainWindow.__init__(self, parent)


def main():
  qApp = QtGui.QApplication(sys.argv)  

  tab = TabWidget()  

  button = QtGui.QPushButton('Hello')  
  @button.clicked.connect  
  def clicked():  
    tab.addTab(QtGui.QLabel('Hello'), 'Hello')  

  tab.addTab(button, 'Button')  

  layout = QtGui.QHBoxLayout()  
  layout.addWidget(tab)  

  window = QtGui.QWidget()  
  window.setLayout(layout)  
  window.resize(600, 400)  
  window.show()  

  qApp.exec_()  

if __name__ == "__main__":
  main()
4

1 に答える 1

3

通常の使用方法QTabWidgetは次のとおりです。

  1. を作成しますQTabWidget
  2. QWidgetタブ ダイアログのページごとに を作成しますが、それらの親ウィジェットは指定しません。
  3. 子ウィジェットをページ ウィジェットに挿入し、レイアウトを使用して通常どおりに配置します。
  4. addTab()orを呼び出しinsertTab()てページ ウィジェットをタブ ウィジェットに配置し、各タブに適切なラベルとオプションのキーボード ショートカットを付けます。

http://qt-project.org/doc/qt-5.0/qtabwidget.html#details

アップデート:

untitled.ui単一のチェックボックスを使用して、Qt Designer でファイルを作成しました。親への呼び出しも追加し__init__ましたMyWidget:

import sys
from PyQt4 import QtCore, QtGui, uic


class MyWidget(QtGui.QWidget):
  def __init__(self, parent = None):
    QtGui.QWidget.__init__(self)
    uic.loadUi('untitled.ui', self)


class TabWidget(QtGui.QTabWidget):  
  def __init__(self, parent=None):  
    super (TabWidget, self).__init__(parent)  
    self.setTabsClosable(True)  
    self.tabCloseRequested.connect(self.removeTab)
    self.inside = MyWidget()

  def tabInserted(self, index):  
    self.tabBar().setVisible(self.count() > 1)  

  def tabRemoved(self, index):  
    self.tabBar().setVisible(self.count() > 1) 


class MainWindow(QtGui.QMainWindow):
  def __init__(self,parent=None):
    QtGui.QMainWindow.__init__(self, parent)


def main():
  qApp = QtGui.QApplication(sys.argv)  

  tab = TabWidget()  

  button = QtGui.QPushButton('Hello')  
  @button.clicked.connect  
  def clicked():  
    tab.addTab(QtGui.QLabel('Hello'), 'Hello')  

  tab.addTab(button, 'Button')  

  layout = QtGui.QHBoxLayout()  
  layout.addWidget(tab)  

  window = QtGui.QWidget()  
  window.setLayout(layout)  
  window.resize(600, 400)  
  window.show()  

  qApp.exec_()  

if __name__ == "__main__":
  main()

そして、それは機能します。

于 2012-07-30T13:29:06.700 に答える