关于在PyQt中创建选项卡的困惑

0 投票
1 回答
1420 浏览
提问于 2025-04-17 15:21
import sys
from PyQt4 import QtCore, QtGui

class Class2(object):
    def __init__(self,parent):
        self.welcomeScreen(self)


    def welcomeScreen(self,parent):
        print 'hello'
        self.centralwidget=QtGui.QWidget(parent)
        self.tabWidget=QtGui.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(0,0,661,511))
        self.tab=QtGui.QWidget()
        self.lineEdit=QtGui.QLineEdit(self.tab)
        self.tabWidget.addTab(self.tab,"")
        self.tabWidget.show()



class Class1(QtGui.QMainWindow):
    def __init__(self):
        super(Class1, self).__init__()
        self.func()

    def func(self):
        ex=Class2(self)





def main():
    app = QtGui.QApplication(sys.argv)
    mw = Class1()
    mw.show()
    sys.exit(app.exec_())


if __name__=='__main__':
    main()

好的。在开发一个小型课程管理系统时,我遇到了一个问题,我需要在一个类中创建标签页,而这个类并不是定义主窗口的那个类。下面的程序简化了我的问题。

问题出在 welcomeScreen(self, parent) 这个函数里,我需要添加一个标签控件。错误信息是:TypeError: QWidget(QWidget parent=None, Qt.WindowFlags flags=0): argument 1 has unexpected type 'Class2'

1 个回答

0

这一行:

self.welcomeScreen(self)

应该是

self.welcomeScreen(parent)

你实际上是把 Class2 的对象传给 welcomeScreen 两次。

self.welcomeScreen(b) 相当于 Class2.welcomeScreen(self, b)

撰写回答