如何从类方法中的导入模块调用函数?

时间:2013-03-23 21:09:46

标签: python-3.x tkinter subprocess class-method

我正在尝试用tkinter制作一个小的GUI程序。我需要使用Python的

subprocess.call()

当我在类方法中尝试这样做时,我得到以下错误:

    self.return_code = self.subprocess.call("echo Hello World", shell=True)
AttributeError: 'App' object has no attribute 'subprocess'

以下是我的计划的一部分:

from tkinter import *
from subprocess import call

class App:
    def __init__(self, mainframe):
        self.mainframe = ttk.Frame(root, padding="10 10 12 12", relief=GROOVE) 
        self.mainframe.grid(column=0, row=1, sticky=(N, W, E, S))

        self.proceedButton = ttk.Button(self.mainframe, text="Proceed", command=self.proceed)
        self.proceedButton.grid(column=0, row=9, sticky=(W))

    def proceed(self):
        self.proceedButton.config(state=DISABLED)
        self.return_code = self.subprocess.call("echo Hello World", shell=True)

proceed函数内的最后一行会抛出错误。

我正在学习Python。任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:3)

尝试使用subprocess.call代替self.subprocess.call

import subprocess
self.return_code = subprocess.call("echo Hello World", shell=True)

selfApp的一个实例。 subprocess是一个模块。要了解self.subprocess错误的原因,请阅读Classes上的Python教程中的“Random Remarks”。然后阅读有关模块的内容,以及how to call a module's functions