不支持的 +: 'int' 和'Entry'的操作数类型



我知道z是一个Entry,5是一个integer但我不知道如何将z更改为用户可以输入的integer
这是我的代码:

import smtplib
from tkinter import *
window = Tk()
z = Entry(window, width=35, bg="white")
z.grid(row=5, column=2, sticky=W)

def click():
global YOUR_EMAIL_ADDRESS
YOUR_EMAIL_ADDRESS=YOUR_EMAIL_ADDRESS.get()
global YOUR_PASSWORD
YOUR_PASSWORD=YOUR_PASSWORD.get()
global TARGET_EMAIL
TARGET_EMAIL=TARGET_EMAIL.get()
global subject
subject=subject.get()
global msg
msg=msg.get()
global z
z=z.get()
send_email(subject, msg)
x = 5 + z
print(z)

在 tkinter 中,字符串和整数分别有StringVar()IntVar()。所以在这里你需要使用一个名为Entry(.....,textvariable=my_var)的 Entry 小部件的关键字参数,在 tkinter 中你必须在使用变量之前定义变量,所以这是你的代码,如果你有问题理解,我可以简化你的代码你可以问或只是复制和使用它。

import smtplib
from tkinter import *
window = Tk()
my_var = IntVar()
z = Entry(window, width=35, bg="white",textvariable=my_var)
z.grid(row=5, column=2, sticky=W)

def click():
global YOUR_EMAIL_ADDRESS , YOUR_PASSWORD , TARGET_EMAIL , subject , msg
YOUR_EMAIL_ADDRESS=YOUR_EMAIL_ADDRESS.get()
YOUR_PASSWORD=YOUR_PASSWORD.get()
TARGET_EMAIL=TARGET_EMAIL.get()
subject=subject.get()
msg=msg.get()
send_email(subject, msg)
x = 5 + my_var.get()
print(my_var)

请注意,我删除了您的z = z.get()分配,因为这样说可能是错误的,相反您也可以这样做。 此外,要获取输入框的值,您可以使用z.get()这意味着您的最后一行代码将是

x = 5 + int(z.get())
print(z.get())

我不建议使用z = z.get(),因为您的函数之外已经有一个 z。请注意,我使用的是int()因为在 Python 中你不能"+"一个 str 和 int。

相关内容

最新更新