2012-11-22 28 views
4

我想使用Tkinter创建弹出窗口。 我能做到这样:可选文本的python tkinter弹出窗口

import Tkinter 
a="some data that use should be able to copy-paste" 
tkMessageBox.showwarning("done","message") 

但是有一个问题,即用户需要能够选择,复制和粘贴文本显示。 这样做是不可能的。

有没有办法用Tkinter做到这一点? (或默认情况下使用Python提供的另一个工具)

预先感谢任何提示

回答

2

here,似乎使用Entry在Tkinter的是可行的解决方法。下面是代码:

import Tkinter as Tk 
root = Tk.Tk() 

ent = Tk.Entry(root, state='readonly') 
var = Tk.StringVar() 
var.set('Some text') 
ent.config(textvariable=var, relief='flat') 
ent.pack() 
root.mainloop() 

编辑:为了您的意见作出回应,我found的方式插入多行文字,使用Text部件。 这里是一个解决方案的草案:感兴趣的任何更好的解决方案

from Tkinter import * 

root = Tk() 
T = Text(root, height=2, width=30, bg='lightgrey', relief='flat') 
T.insert(END, "Just a text Widget\nin two lines\n") 
T.config(state=DISABLED) # forbid text edition 
T.pack() 
mainloop() 

我(还):)

+0

HM,这是可以接受的,但是当我尝试添加下面几行:行=“文本”,行= line +“\ n”,line = line +“还有一些文字”,var.set(line)。 “\ n”被解释为一个符号,但不是一个有趣的新行 – Tebe

+0

,这个表单中的文本不能被复制(它可以被选择为一个想要的,但是被复制)它只是我还是不能这样做呢? – Tebe

+0

啊,我猜,这是T.config中的参数 - state = DISABLED - 控制是否可以选择文字,所以应该设置ENABLED,以便用户选择文字 – Tebe

0

您可以使用复制和粘贴按钮。首先你需要选择。在文本组件它是由

selection=nameoftextwidget.get(SEL_FIRST,SEL_LAST) 

轻松完成然后你就可以用这个通过使用选择的复制很容易。如果你想复制/粘贴在同一文本组件,您可以使用:

nameoftextwidget.insert(END,"\n"+selection)