我是一个python初学者,目前正在尝试制作一个简单的python电子邮件应用程序。 我一直在纠结于代码的一部分,如下所示:
from tkinter import *
root = Tk()
root.title("E-mail Application")
sender_emaillabel= Label(root,text="Enter Sender Email:").grid(row=0, column=0,columnspan=1)
e = Entry(root, width=35, borderwidth=5)
e.grid(row=1, column=0, columnspan=3, padx=10, pady=10)
def entersender_click():
global sender_email
sender_email=e.get()
e.delete(0, END)
return
entersender= Button(root, text="Enter", padx=10, pady=5, command=entersender_click).grid(row=1, column=4)
root.mainloop()
Pycharm说,“全局变量”sender_email“在模块级别上是未定义的”,并且sender_email变量似乎不接受输入到E中的任何内容。
如有任何帮助,我们将不胜感激!
PyCharm希望您遵循特定的代码编写方式。 它告诉您的是,您没有首先在全局命名空间中定义sender_email
。 通过将这个变量添加到全局名称空间并给它一个默认值,PyCharm将摆脱“警告”。
from tkinter import *
root = Tk()
root.title("E-mail Application")
sender_emaillabel= Label(root,text="Enter Sender Email:").grid(row=0, column=0,columnspan=1)
e = Entry(root, width=35, borderwidth=5)
e.grid(row=1, column=0, columnspan=3, padx=10, pady=10)
sender_email = '' # Define it somewhere before the function.
# This will get rid of the lines under your code and the warning.
def entersender_click():
global sender_email
sender_email=e.get()
e.delete(0, END)
return
entersender= Button(root, text="Enter", padx=10, pady=5, command=entersender_click).grid(row=1, column=4)
root.mainloop()
我个人觉得这个警告让我自己很恼火,因为我在类中经常遇到这个警告,因为我没有像它希望的那样在__init__
中定义所有的类属性。
一些改变想法的事情。
>
使用import tkinter as tk
而不是import*
如果您将geometry manager直接应用于小部件,并且不打算在将来对它们进行更改,则无需按名称定义小部件。
您没有理由在函数中使用return
来删除它。
更新代码:
import tkinter as tk
root = tk.Tk()
root.title("E-mail Application")
tk.Label(root,text="Enter Sender Email:").grid(row=0, column=0,columnspan=1)
e = tk.Entry(root, width=35, borderwidth=5)
e.grid(row=1, column=0, columnspan=3, padx=10, pady=10)
sender_email = ''
def entersender_click():
global sender_email
sender_email=e.get()
e.delete(0, END)
tk.Button(root, text="Enter", padx=10, pady=5, command=entersender_click).grid(row=1, column=4)
root.mainloop()