差不多先生air 发表于 2020-8-29 10:31:13

关于TKinter的一个问题

from tkinter import *

root = Tk()

text = Text(root, width=20, height=5)
text.pack()

def check():
    text.insert(INSERT, "1")
    contents = text.get(1.0, END)
    print(contents)
    if contents == "1":
      text.insert(INSERT, "2")

Button(root, text="检查", command=check).pack()
mainloop()


请问一下,我的程序在第一次执行的时候,为什么在if那里不能接着执行下去,第一次content的值应该就是1啊!求大神解答。。。





疾风怪盗 发表于 2020-8-29 10:46:41

本帖最后由 疾风怪盗 于 2020-8-29 10:56 编辑

看你代码像是对的,为什么没有执行if是因为if contents == "1":判断为false
print(contents)contents打印出啦好像是1和一个回车
为什么会有回车,不知道了,改成下面这样能运行,但是原因不清楚
contents = text.get(1.0, 'end')[:-1]

差不多先生air 发表于 2020-8-29 10:56:18

疾风怪盗 发表于 2020-8-29 10:46
看你代码像是对的,为什么没有执行if是因为判断为false
contents打印出啦好像是1和一个回车
为什么会有回 ...

但是我想只让if那个语句只执行开头的一次,到第二次就不执行If里面的语句了,请问有什么办法可以实现吗

疾风怪盗 发表于 2020-8-29 10:57:21

差不多先生air 发表于 2020-8-29 10:56
但是我想只让if那个语句只执行开头的一次,到第二次就不执行If里面的语句了,请问有什么办法可以实现吗

contents = text.get(1.0, 'end')[:-1]
刚才想错了,改成这样,把最后一位去掉

疾风怪盗 发表于 2020-8-29 10:58:22

差不多先生air 发表于 2020-8-29 10:56
但是我想只让if那个语句只执行开头的一次,到第二次就不执行If里面的语句了,请问有什么办法可以实现吗

判断不为1就不执行了,你加了个2,应该来说是行的,现在就是问题不知道为什么1后面会出现一个回车

差不多先生air 发表于 2020-8-29 11:00:49

疾风怪盗 发表于 2020-8-29 10:57
刚才想错了,改成这样,把最后一位去掉

非常感谢!
页: [1]
查看完整版本: 关于TKinter的一个问题