在不同类中创建小部件

2024-04-26 23:14:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在“DataClass”中有主窗口。如何在另一个类(HelloClass)中创建小部件

你知道吗测试.py你知道吗

import sys
import label
from PyQt4 import QtGui, QtCore

class DataClass(QtGui.QMainWindow):
    def __init__(self):
        super(DataClass, self).__init__()
        self.window()

    def window(self):
        ex=label.HelloClass(self)
        ex.print_label()

def main():
    app = QtGui.QApplication(sys.argv)
    ob=DataClass()
    ob.show()
    sys.exit(app.exec_())

if __name__=='__main__':
    main()

而这就是标签.py'文件:

import sys
from PyQt4 import QtGui, QtCore

class HelloClass(QtGui.QMainWindow):

    def print_label(self):
        self.la=QtGui.QLabel("hello",self)
        self.la.move(300,100)
        self.la.show()

import sys
from PyQt4 import QtGui, QtCore

class HelloClass(QtGui.QMainWindow):

    def print_label(self):
        self.la=QtGui.QLabel("hello",self)
        self.la.move(300,100)
        self.la.show()

Tags: fromimportselfdefsyslabellaclass
1条回答
网友
1楼 · 发布于 2024-04-26 23:14:49

您不能有两个QMainWindow类,您不应该从HelloClass上的QMainWindow继承。如果您将parent设置为label,那么将它设置为您的DataClass,也就是您的QMainWindow。你知道吗

class HelloClass(object):
    def print_label(self, parent):
        self.la = QtGui.QLabel("hello", parent)
        self.la.move(300, 100)
        self.la.show()

class DataClass(QtGui.QMainWindow):
    def __init__(self):
        super(DataClass, self).__init__()
        self.window()

    def window(self):
        ex = label.HelloClass()
        ex.print_label(self)

但老实说,使用PyQt创建GUI的最好方法是使用QtDesigner。使用QtDesigner创建.ui文件,然后使用命令pyuic4 your.ui -o ui_your.py创建.py文件。你知道吗

更新

用于使用QtDesigner创建的gui的控制器类如下所示:

from ui_objects import Ui_Objects  # this is class created with QtDesigner, name of class is a 'Ui_' + name of main Object in QtDesigner    

class Objects(QtGui.QWidget):

    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.ui = Ui_Objects()
        self.ui.setupUi(self)

    # then you can add your own code, in example connect your own methods to actions for widgets

相关问题 更多 >