使用GUI加载python模块

时间:2017-08-17 19:55:06

标签: python

我有一个需要帮助的组织设置问题。这是我当前的文件夹结构。

enter image description here

我想要做的是使用包含功能的指定AppCommands模块运行主UI。根据我想要运行该工具的应用程序。有没有办法使用另一个python文件,我可以加载gui和相关的应用程序命令moduel?因此,当用户单击该按钮时,它会调用corrects app命令。

所以说例如我创建一个像这个伪代码

的python文件

Photoshop的主要执行py文件

 Import photoshop.appcommands as cmds
 Import GUI
 Gui(cmds)

如何告诉我的主GUI工具在运行时加载photoshop模块的“AppCommands”?

app#1代码:

def runTool():
    msg = 'This is Notepad'
    print msg

app#2代码:

def runTool():
    msg = 'This is Photoshop'
    print msg

主要的ui代码:

import sys
import os
from PySide import QtGui, QtCore
import AppCommands as cmds

class MainWindow(QtGui.QMainWindow):
    def __init__(self,parent=None):
        super(MainWindow, self).__init__(parent)

        self.uiButton = QtGui.QPushButton('Button', self)

        # layout
        grid = QtGui.QGridLayout()
        grid.addWidget(self.uiButton, 3, 1)
        main_widget = QtGui.QWidget()
        main_widget.setLayout(grid)
        self.setCentralWidget(main_widget)

        self.uiButton.clicked.connect(self.browse_clicked)

    # actions
    def browse_clicked(self):
        print 'Execute Command'
        cmds.runTool()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:0)

好吧,如果我理解正确,你需要选择正确的模块加载一个函数,然后用一些变量args启动程序吗?

在这种情况下,您可以导入并尝试全局变量:

import notepad.AppCommands
import photoshop.AppCommands

...

# in your app init code:

x = 'photoshop' # an arg passed from config/CLI or from somewhere else
actual_module = globals()[x]
actual_module.AppComands.runTools()

++但是如果你只是不知道如何从某个模块运行某个函数,请关注@ eyllanesc的答案。