【问题标题】:PyQt UI event control segregationPyQt UI 事件控制隔离
【发布时间】:2017-04-17 01:14:09
【问题描述】:

我是 python 的初学者,但我的 Java 和 Android 的 OOPS 概念足以激励我在 python 中制作一些工具。 我正在使用 PyQt 开发应用程序。在我的应用程序中,使用了很多 QTabWidget,并且每个 TAB 小部件中都有很多 UI 控件。请参阅相同的屏幕截图。

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

我的项目文件架构如下:

我知道这将是一件非常容易的事情,但考虑到我使用 Python 的经验,我发现它很难。我非常感谢代码 sn-p 的示例。由于我能够从单独的文件中控制真正复杂的 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 个)

【问题讨论】:

  • 在你的文本中没有真正的问题,尽管在我看来整个事情更像是几个问题。我想,最好将问题分解成不同的小问题并分别询问每个问题,突出显示实际的具体问题,并在必要时提供最小的、运行的示例来显示错误。
  • @Trilarion 刚刚开始工作

标签: python pyqt pyqt4 pyside


【解决方案1】:

好的,我在

中进行了更改

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() 中使用父级传递参数并尝试直接获取 MainGUI 的对象,而不是作为来自 MainWindow 的参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 2011-11-11
    • 2017-03-25
    • 2015-06-10
    • 2018-10-05
    • 2015-01-28
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多