如何在屏幕上的随机位置使用Tkinter.Text显示文本

时间:2017-03-18 08:18:10

标签: python tkinter

使用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”会导致文本插入到上一个文本之后,而不是按预期插入随机位置。

2 个答案:

答案 0 :(得分:2)

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

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()

答案 1 :(得分:0)

我推荐这样的东西

    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窗口中。结合鼠标点击应该很容易。