2016-06-18 3 views
3

Я хочу вызвать метод delImg, когда вызывается кнопка delete. Для этого я использовал следующий сегмент кода. Но параметры метода подсвечиваются как неправильные. Я использовал Tkinter.Как исправить?Сохранение ввода из текстового поля в Tkinter

import Tkinter 
import sys 
from Tkinter import * 
from tkFileDialog import askopenfilename 
root= Tk() 

enText =StringVar() 

#root.geometry("400*400+500+300") 
root.title("Welcome") 


def Hello(): 
mtext = enText.get() 
mlabel2 = Label(root,text=mtext).pack() 
print(mtext) 
return mtext 

def callback(): 
name= askopenfilename() 
print name 
return name 

def delImg(m1,n1): 
if(m1!=n1): 
    print("Error") 

text = Entry(root,textvariable =enText).pack() 
mbtn = Button(root,text="Enter",command=callback,fg='red').pack() 
mbtn = Button(root,text="Ok",command=Hello,fg='red').pack() 
mbtn = Button(root,text="Delete", command= lambda:   

delImg(mtext,name),fg='red').pack() 


#print(mtext) 
root.mainloop() 
+0

Вам не хватает '(' в одной из ваших строк. Я бы ожидал, что вы захотите этого: 'delImg ((mtext, name), fg = 'red'). Pack()'. Это просто опечатка здесь, или это как в исходном коде? – coralvanda

ответ

3

В mtext и name переменные существуют только в рамках Hello и Callback функций, соответственно.

Это означает, что даже если у вас есть переменная mtext, она находится внутри функции Hello, и вы не можете получить к ней доступ извне самой функции.

Существует два способа получить его в глобальном масштабе. —. Использовать эти переменные как глобальные где-то в коде (global mtext) или просто вызвать функцию во внешней области и присвоить возвращаемое значение новой переменной, которую вы Используется с функцией delImg.

+0

Большое спасибо –

+1

N.Perera: Пожалуйста, прочитайте [_Что делать, если кто-то отвечает на мой вопрос? _] (http://stackoverflow.com/help/someone- ответы) – martineau

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