PyQt UI事件控制隔离

时间:2016-12-02 07:25:46

标签: python pyqt pyqt4 pyside

我是python的初学者但是我的Java和Android的OOPS概念非常强大,足以激励我在python中制作一些工具。 我正在使用PyQt开发应用程序。在我的应用程序中,使用了很多QTabWidget,并且在每个TAB小部件中都有很多UI控件。请看截图同样的。 enter image description here

整个工具的所有事件控制都保存在一个文件中,但现在我想根据每个QTab的一个单独的python文件来隔离它,以便在Tab中进行事件控制。

我的项目文件架构如下:

enter image description here

我知道这将是一件非常简单的事情,但考虑到我使用Python的经验,我觉得很难。我非常感谢代码片段的示例。因为我能够从单独的文件控制真正复杂的QThread但是无法知道如何为Ui控件执行它。

我尝试为它创建一个文件,就像我为Thread类创建的那样,但最终将参数传递给super

from generated.MainGUI import Ui_MainWindow
class SemiAuto_Create_Load(QtGui.QMainWindow):
    def __init__(self,parent=none):
        super(SemiAuto_Create_Load, self).__init__()
        self.ui = Ui_MainWindow
        self.ui.setupUi(self)
        self.connectControlEvents()

尝试:self.sacl = SemiAuto_Create_Load()

例外:

TypeError: init ()只需要3个参数(给定1个)

1 个答案:

答案 0 :(得分:0)

好的,我在

中进行了更改

Mainwindow.py

class MainWindow(QtGui.QMainWindow):

    def __init__(self, parent = None):
        super(MainWindow, self).__init__(parent)
        Profile().notify(None)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.connectButtons()

        SemiAuto_Create_Load(self, self.ui)

并且

<强> SemiAuto_Create_Load

class SemiAuto_Create_Load(QtGui.QMainWindow):
    def __init__(self, parent, ui):
        super(SemiAuto_Create_Load, self).__init__(parent)
        self.ui = ui
        self.connectControlEvents()

    def connectControlEvents(self):
        self.ui.load_vsa_radio.clicked.connect(self.onLoad_vsa_radio)
        self.ui.create_vsa_radio.clicked.connect(self.onCreate_vsa_radio)

问题是在init()中使用parent传递参数并尝试直接获取MainGUI的对象,而不是从MainWindow获取参数