【问题标题】:'>' not supported between instances of 'IntVar' and 'IntVar'在“IntVar”和“IntVar”的实例之间不支持“>”
【发布时间】:2020-06-03 13:56:54
【问题描述】:

我是一个新程序员,所以请放轻松。我试图从用户那里获取条目并将其转换为 int,然后假设用户输入一个数字,然后运行 ​​while 循环。当我尝试在 while 循环(第 13 行)上运行此代码时,我收到此错误代码: 发生异常:“IntVar”和“IntVar”实例之间不支持 TypeError '>'

我的代码:

import smtplib
from tkinter import *

window = Tk()
AMNT_REPEAT= Entry(window, width=35, bg="white")
AMNT_REPEAT.grid(row=6, column=2, sticky=W)

AMNT_REPEAT = IntVar()
x = 0

x = IntVar()

while AMNT_REPEAT > x :
    def click():
        global YOUR_EMAIL_ADDRESS , YOUR_PASSWORD , AMNT_REPEAT , 
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()
        AMNT_REPEAT=AMNT_REPEAT.get()

        send_email(subject, msg)

    AMNT_REPEAT = AMNT_REPEAT -1    

【问题讨论】:

  • IntVars 不支持比较。使用AMNT_REPEAT.get() > x 将内容与整数进行比较。但是请注意,您的代码还有其他主要问题,即使您解决了这个问题,它也无法正常工作。
  • x 也是 IntVar,所以应该是 AMNT_REPEAT.get() > x.get()

标签: python debugging tkinter


【解决方案1】:

在这一行:

while AMNT_REPEAT > x :

您比较两个IntVar 实例,这会引发TypeError。我的猜测是您想比较它们的值,这将通过以下方式完成:

while AMNT_REPEAT.get() > x.get():

附: 在你做的代码中:

x = 0

x = IntVar()

第一个声明是多余的,因为它会立即被第二个覆盖。

【讨论】:

    【解决方案2】:

    IntVar() 类型不支持比较,因此您必须将它们转换为 int

    变化:

    AMNT_REPEAT > x
    

    收件人:

    AMNT_REPEAT.get() > x.get()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-08
      • 1970-01-01
      • 2018-08-29
      • 2016-06-05
      • 2019-09-10
      • 2018-02-23
      相关资源
      最近更新 更多