python - 如何修复 AttributeError:“NoneType”对象没有属性“get”
问题描述
运行 SIMPLE GUI 代码时出现此错误
AttributeError:“NoneType”对象没有属性“get”
gui本身非常简单,主要是关于使用序列号创建软件登录功能。我在网上看到了一些教程并创建了这个示例,当我运行时出现错误。我该如何解决这个问题?
from tkinter import *
root1 = Tk()
root1.geometry("700x330+350+300")
key = "Agcy5x7kZe"
frame = LabelFrame(root1)
def Submitcommand():
a = entry.get()
b = serialentry.get()
print(a)# To check
print(b)# To check
photo = PhotoImage(file = 'gil.png')
photo1 = Label(frame , image = photo).grid(row = 0 , column = 0 , columnspan = 2 , pady = (0 , 20))
username = Label(frame, text = "Username :" , font = "helvetica 30 bold").grid(row = 1 , column = 0)
entry = Entry(frame, bd = 5 , font = "Lucida 30 bold" , width = 25).grid(row = 1 , column = 1)
label = Label(frame, text = "Serial Key : " , font = "helvetica 30 bold").grid(row = 2 , column = 0)
serialentry = Entry(frame, bd = 5 , font = "Lucida 30 bold" , width = 25).grid(row = 2 , column = 1)
submit = Button(frame , text = "Login" , height = 2 , width = 10 , command = Submitcommand).grid(row = 3 , column = 1 , columnspan = 2 , pady = (0 , 20))
frame.place(relx = 0.5 , rely = 0.5 , anchor = CENTER)
root1.mainloop()
解决方案
您必须首先创建小部件,然后才能放置等。你看,Entry()
返回一个入口对象,所以一旦你这样做e = Entry()
,e
就是一个对象。该对象有一个place
方法,所以一旦你运行e.place()
它然后放置它。问题是
a = Entry().place()
和
e = Entry()
a = e.place()
产生相同的a
,但你不感兴趣,你需要e
。这是您修复的代码:
from tkinter import *
root1 = Tk()
root1.geometry("700x330+350+300")
key = "Agcy5x7kZe"
frame = LabelFrame(root1)
def Submitcommand():
a = entry.get()
b = serialentry.get()
print(a)# To check
print(b)# To check
photo = PhotoImage(file = '/home/pi/2020-05-02-143258_1920x1080_scrot.png')
photo1 = Label(frame , image = photo)
photo1.grid(row = 0 , column = 0 , columnspan = 2 , pady = (0 , 20))
username = Label(frame, text = "Username :" , font = "helvetica 30 bold")
username.grid(row = 1 , column = 0)
entry = Entry(frame, bd = 5 , font = "Lucida 30 bold" , width = 25)
entry.grid(row = 1 , column = 1)
label = Label(frame, text = "Serial Key : " , font = "helvetica 30 bold")
label.grid(row = 2 , column = 0)
serialentry = Entry(frame, bd = 5 , font = "Lucida 30 bold" , width = 25)
serialentry.grid(row = 2 , column = 1)
submit = Button(frame , text = "Login" , height = 2 , width = 10 , command = Submitcommand)
submit.grid(row = 3 , column = 1 , columnspan = 2 , pady = (0 , 20))
frame.place(relx = 0.5 , rely = 0.5 , anchor = CENTER)
root1.mainloop()
希望这会有所帮助!
推荐阅读
- swift - 无法使用在 Xcode 10.1 中使用 swift 创建的静态库
- firebase - 如何绕过 Firebase Hosting 的默认 Vary on Authorization 标头
- react-native - 如何识别 react-native 崩溃日志中报告的确切问题?
- headless - 无头 raspi 不工作 - android.permission.CONTROL_KEYGUARD
- python - 我应该在 python 的类中使用我自己的属性吗?
- html - 如何在表 td 字段中设置固定宽度?
- python - 如何在不触发多个回调的情况下同步 Bokeh Wdigets
- labview - 安装后控制面板中LabVIEW应用程序的自定义应用程序图标
- python - 根据另一列查找列值的顶级类别
- javascript - Vue 指令 v-for="thing in collection" vs "thing of collection"