使用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”会导致文本插入到上一个文本之后,而不是按预期插入随机位置。
答案 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窗口中。结合鼠标点击应该很容易。