You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tkinter开发寻宝岛游戏时,字体放大与打字机效果结合报错排查

问题修复:TypeError 类型错误解决

错误原因

第39行的for i in line1:是问题根源:

  • line1是tkinter的Label组件对象,并非字符串内容。直接遍历Label对象会返回非字符串类型的元素(如整数索引),执行a+i时就会触发str与int无法拼接的类型错误。
  • 要实现逐字打印,需要遍历Label的文本内容,即line1['text']。
  • 额外问题:代码中变量a同时用于指代Label组件和字符串内容,容易造成混淆,建议重命名区分。

修正后的完整代码

import tkinter

window = tkinter.Tk()
window.title("Treasure Island")
window.attributes('-fullscreen', True)

logo = tkinter.Label(window, text='''
          |                   |                  |                     |
 _________|________________.=""_;=.______________|_____________________|_______
|                   |  ,-"_,=""     `"=.|                  |
|___________________|__"=._o""-._        `"=.______________|___________________
          |                `"=._o""=._      _`"=._                     |
 _________|_____________________:=._o "=._."_.-="'"=.__________________|_______
|                   |    __.--" , ; `"=._o." ,-"""-._ ".   |
|___________________|_._"  ,. .` ` `` ,  `"-._"-._   ". '__|___________________
          |           |o""=._` , "` `; .". ,  "-._"-._; ;              |
 _________|___________| ;`-.o""=._; ." ` '`."\` . "-._ /_______________|_______
|                   | |o;    `"-.o""=._``  '` " ,__.--o;   |
|___________________|_| ;     (#) `-.o `"=.`_.--"_o.-; ;___|___________________
____/______/______/___|o;._    "      `".o|o_.--"    ;o;____/______/______/____
/______/______/______/_""=._o--._        ; | ;        ; ;/______/______/______/_
____/______/______/______/__""=._o--._   ;o|o;     _._;o;____/______/______/____
/______/______/______/______/____""=._o._; | ;_.--"o.--"_/______/______/______/_
____/______/______/______/______/_____""=.o|o_.--""___/______/______/______/____
/______/______/______/______/______/______/______/______/______/______/_____ /
''')
logo.pack()
logo.config(font=('length', 15))

line1 = tkinter.Label(window, text="Welcome to Treasure Island,\n"
                                   "Your goal is to find the buried Treasure!")
line1.config(font=('length', 15))

label1_var = tkinter.StringVar()
typewriter_label = tkinter.Label(textvariable=label1_var)
typewriter_label.pack()
# 设置打字机效果的字体大小,确保放大效果生效
typewriter_label.config(font=('length', 15))

# 遍历Label的文本内容而非Label对象本身
for char in line1['text']:
    current_text = label1_var.get()
    label1_var.set(current_text + char)
    window.update()
    window.after(50)  # 控制逐字打印的间隔

space = tkinter.Label(window, text=" \n \n ")
space.pack()

window.mainloop()

额外优化说明

  • 重命名变量:将原label1改为label1_var,a改为typewriter_label,避免变量混淆。
  • 补充window.mainloop()启动tkinter主事件循环,原代码缺失该步骤会导致窗口无法正常维持。

内容的提问来源于stack exchange,提问作者moron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:54:24