【问题标题】:How to display text using Tkinter.Text at a random place on screen如何使用 Tkinter.Text 在屏幕上的随机位置显示文本
【发布时间】:2017-03-19 00:38:06
【问题描述】:

使用 python Tkinter,我想在单击鼠标键时将文本放置在随机位置。这是我的代码:

from Tkinter import *  
import sys
from random import randint

root = Tk()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = 10
y = 10

def key(event):
    if event.char == 'c':
        xloc = randint(0, 100)
        yloc = randint(0, 100)
        T.mark_set("insert", "%d.%d" % (0, 0))
        T.insert('%d.%d' % (xloc, yloc), 'something')

    if event.char == 'q':
        sys.exit()

frame = Frame(root, width=screen_width, height=screen_height)  
frame.bind("<Key>", key)  
frame.focus_set()
frame.pack()

T = Text(frame, height=screen_height, width=screen_width, bg="white", fg="blue")
T.mark_set("insert", "%d.%d" % (0, 0))
T.pack()

root.mainloop()

窗口弹出后,按'c'会导致文本插入到前一个文本之后,而不是像预期的那样随机插入。

【问题讨论】:

  • 谢谢。会这样做,看看
  • 试过了。添加了大约 3000 个空格,并尝试将文本放置在屏幕分辨率范围内的位置。它似乎以某种方式失败,并且文本放置在 3000 个空格之后。使用 mark_insert() 将光标设置为 0,在插入所有空格之后和放置随机文本之前为 0。更新了代码

标签: python tkinter


【解决方案1】:

尝试使用画布。这与您当前的实现非常相似。

from Tkinter import *
from random import randint

root = Tk()

def key(event):
    print "pressed", repr(event.char)

    if event.char == 'c':
        xloc = randint(0, 100)
        yloc = randint(0, 100)
        canvas.create_text(xloc, yloc, text='something')

canvas = Canvas(width=100, height=100, bg='white')
canvas.focus_set()
canvas.bind("<Key>", key)
canvas.pack(expand=YES, fill=BOTH)
root.mainloop()

【讨论】:

  • 没问题!在 Stack Overflow 上,表达感谢的最佳方式是对您认为有用的任何问题或答案进行投票。对于您的问题,如果其中一个答案非常适合您的问题,您可以将其标记为已接受的答案。有关指南,请参阅帮助中心。
  • 当然。但是我要投票的分数少于要求的分数。我已将您的答案标记为已接受的答案
【解决方案2】:

我会推荐这样的东西

    from tkinter import *
    import random

    Text(text="put your text here".grid(row=random.randrange(0,9),column=random.randrange(0,9),columnspan=2)

此代码只是将文本小部件随机放置在 10*10 的窗口中。绑定到鼠标点击应该很容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2019-06-03
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多