2016-01-10 2 views
-1

Я пишу программу python, чтобы взять пользовательский ввод для входного файла и выходного каталога, а затем взять dd-образ входного файла с помощью модуля подпроцесса. Я написал следующий код. Я не могу использовать переменные, которые я использую в одном def, в некоторой другой части def. Пожалуйста, помогите мне с этим, поскольку я новичок в Python.Как использовать переменные между различными действиями событий кнопки tkinter python?

def open_dir(): 
    o_file = subprocess.call(["zenity","--file-selection","--directory","--title=Select Destination Directory"]) 
    o_var = StringVar() 
    o_var.set(o_file) 

def quit_root(): 
    root.destroy() 


def get_input(): 
    msg1 = subprocess.call(["df","-h"]) 
    msg2 = StringVar() 
    msg2.set(msg1) 
    msg = Message(labelframe, textvariable=msg1) 
    msg.pack() 
    in_file=subprocess.check_output(["zenity","--entry"]) 
    var=StringVar() 
    var.set(in_file) 


def dev_img(): 
    global var 
    global o_var 
    input_file=var 
    output_file=o_var+"device.img" 
    out = subprocess.check_output(["dd","if="+input_file,"|pv|","of="+output_file,"bs=1024"], stderr=subprocess.STDOUT) 
    var1 = StringVar() 
    var1.set(out) 
    label1 = Message(labelframe, textvariable=var1) 
    label1.pack() 

Пожалуйста, предложите мне какой-нибудь способ, чтобы я мог использовать «вар» и «o_var» переменные из open_dir() и get_input() и использовать эти varibales в dev_img().

+0

Вы можете передавать параметры в функции и возвращать (несколько) значения из них ... – StoryTeller

+0

Но я использую параметр команды в кнопке Tkinter. Как передать в него параметры? –

+0

Я просто хочу использовать переменные, используемые в двух других методах. Так может ли jst вернуть их некоторым переменным? –

ответ

0

Я думаю, что знаю, что вы пытаетесь спросить. Как вы «наследуете» выходные переменные от одной функции к другой функции? Для этого вам нужно использовать классы. Python полностью объектно-ориентирован, поэтому он работает таким образом, что позволяет объектам взаимодействовать друг с другом.

Проверить эту ссылку: http://www.diveintopython.net/object_oriented_framework/defining_classes.html

Это руководство позволит вам создать класс, который позволит вам использовать ваш вар и var_o в любых функций, определяемых пользователем.

Надеюсь, это поможет.

Смежные вопросы