2017-03-18 223 views
0

使用python Tkinter,我希望在鼠标点击一个按键时将文本放置在随机位置。这里是我的代码:如何在屏幕上的随机位置使用Tkinter.Text显示文本

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”导致以前的文本后要插入的文本,而不是在一个随机位置。

+0

谢谢。将这样做,看看 –

+0

试过。增加了大约3000个空格,并尝试将文本放置在屏幕分辨率内的位置上。它似乎失败了,并且文字被放置在3000个空格之后。使用mark_insert()在插入所有空格后放置随机文本之前将光标设置为0,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() 
+0

非常感谢。这工作! –

+0

没问题!在堆栈溢出中,说出感谢的最佳方式是提出任何有用的问题或答案。在你的问题中,如果其中一个答案非常适合你的问题,你可以将其标记为接受的答案。有关准则,请参阅帮助中心。 –

+0

当然。但是我的积分比积分要少。尽管我已经将答案标记为已接受的答案 –

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的窗口。绑定到鼠标点击应该很容易。

相关问题