【问题标题】:How to add text to a canvas from a list如何从列表中将文本添加到画布
【发布时间】:2016-03-24 14:34:25
【问题描述】:

所以基本上我有这行:

StoreItems = random.sample(set(['sword','pickaxe','toothpick','hammer','torch','saw']), 5)

从列表中随机选择 5 个字符串。我想将随机选择的这 5 个作为单独的文本与 canvas.create_text 放在我的 Tkinter 画布上。

【问题讨论】:

  • 您是要我们为您编写代码吗?如果没有,请说明您尝试过的和无效的。

标签: python python-3.x tkinter tk tkinter-canvas


【解决方案1】:

遍历store_items:

import random
from tkinter import *


store_items = random.sample(['sword','pickaxe','toothpick','hammer','torch','saw'], 5)


root = Tk()
canvas = Canvas(root)
canvas.pack()
XBASE, YBASE, DISTANCE = 10, 20, 20
for i, word in enumerate(store_items):  # <-- iterate words using `for` loop.
    canvas.create_text(
        (XBASE, YBASE + i * DISTANCE),
        text=word, anchor=W, fill='blue')
root.mainloop()

更新要使点击单词触发某些操作,您需要将事件(&lt;1&gt;&lt;Button-1&gt;)绑定到事件处理程序。

import random
from tkinter import *


store_items = random.sample(['sword','pickaxe','toothpick','hammer','torch','saw'], 5)


root = Tk()
canvas = Canvas(root)
canvas.pack()
XBASE, YBASE, DISTANCE = 10, 20, 20
for i, word in enumerate(store_items):  # <-- iterate words using `for` loop.
    canvas.create_text(
        (XBASE, YBASE + i * DISTANCE),
        text=word, anchor=W)

def onclick(e):
    found = canvas.find_closest(e.x, e.y)
    if found:
        canvas.itemconfig(found[0], fill='blue')
canvas.bind('<1>', onclick)

root.mainloop()

【讨论】:

  • 这可行,但我如何将标签绑定添加到每个单词?因此,如果您单击列表中的某个单词,它将执行特定操作。
  • @Daijoubu,我更新了答案以添加另一个示例,展示如何绑定/处理点击事件(更改点击项目的颜色)。如果您还有其他问题,请发布另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多