我在qt中有一个python gui。 gui是使用设计师的buit。它包含选项卡。我想添加一个情节。 我的绘图对象是一个继承自QtCore.QObject的类(称为MyPlot)。要将它添加到gui,我可以在我的类MainWindow中继承,它继承自QtGui.QMainWindow:
self.Myplot(self)
self.MyPlot.plot()
但我不知道如何告诉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()
答案 0 :(得分:1)
使用QTabWidget
的正常方法是执行以下操作:
QTabWidget
。QWidget
,但不要为它们指定父窗口小部件。addTab()
或insertTab()
将页面小部件放入标签窗口小部件,为每个标签提供一个带有可选键盘快捷键的合适标签。http://qt-project.org/doc/qt-5.0/qtabwidget.html#details
更新:
我在Qt Designer中创建了一个文件untitled.ui
,只有一个复选框。我还在__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()
它有效。