Tkinter文本框插入列表随机元素失败问题求助
解决Tkinter Text组件无法显示随机数的问题
嘿,我一眼就看出问题所在啦!你在调用Text.insert()方法的时候,参数传递方式不对。
问题根源
Text.insert()的语法是insert(index, text, [tag, text, tag...]),也就是说,除了第一个索引参数外,后续参数是文本和标签交替的。你原来的代码里把随机数单独作为一个参数传进去,它会被当成标签名而非文本内容,自然就不会显示出来啦。而print()可以接受多个参数并自动拼接,所以没问题,但Text组件不支持这种用法。
修复方案
我们只需要把要显示的内容先拼接成一个完整的字符串,再传给insert()就好,用f-string来拼接是最直观的方式:
from tkinter import * import random root = Tk() numbers = [0,1,2,3,4,5] # 先获取随机数,用random.choice更简洁 random_num = random.choice(numbers) # 拼接成完整的消息字符串 message = f"Your random number is: {random_num} Happy?" AdviseBox = Text(root, width=110, height=10) AdviseBox.pack(side=RIGHT, expand=YES, padx=5, pady=5) # 把完整字符串传入insert AdviseBox.insert(INSERT, message) root.mainloop()
额外小技巧
用random.choice(numbers)代替numbers[random.randint(0, len(numbers)-1)]可以让代码更简洁易读,效果是完全一样的哦~
内容的提问来源于stack exchange,提问作者Bhavik Narang
相关产品推荐
相关产品推荐

