【问题标题】:python tkinter popup window with selectable text带有可选文本的python tkinter弹出窗口
【发布时间】:2012-11-22 19:48:43
【问题描述】:

我想使用 Tkinter 制作弹出窗口。 我可以这样做:

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

但是有一个问题是用户需要能够选择、复制和粘贴显示的文本。 这种方式是不可能的。

有没有办法用 Tkinter 做到这一点? (或python默认提供的其他工具)

提前感谢任何提示

【问题讨论】:

    标签: python popup tkinter


    【解决方案1】:

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

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

    我(仍然)对任何更好的解决方案感兴趣 :)

    【讨论】:

    • hm,这是可以接受的,但是当我尝试添加几行时:line="text", line=line+"\n", line=line+"yet some text", var .set(行)。 "\n" 被解释为一个符号,而不是一个新行
    • 有意思,这种形式的文字不能复制(可以随意选择,但可以复制)是我自己做还是你也不能做?
    • 啊,我猜到了,这是 T.config 中的参数 - state=DISABLED - 控制是否可以选择文本,所以应该设置为 ENABLED,以便用户选择文本
    • 嗯...对不起,第二个例子目前只支持在linux下使用滚动按钮进行复制粘贴(习惯性地测试过,不是CTRL-c,CTRL-v,再次抱歉)。 NORMAL 有一个问题(ENABLED 只是不存在):文本是可编辑的。我目前正在尝试解决这个问题(尝试将insert 方法绑定到do_nothing 函数,但没有成功取消编辑功能)
    • 根据我的实验,当state=DISABLED 时似乎禁用了与<Control-KeyPress-c> 的绑定。 Listbox 也是一个可能的解决方案,但是......它离你的要求更远。
    【解决方案2】:

    您可以使用按钮进行复制和粘贴。首先你需要选择。在文本小部件中,它很容易由

    完成
    selection=nameoftextwidget.get(SEL_FIRST,SEL_LAST)
    

    然后您可以通过使用选择轻松地使用它进行复制。如果您想将其复制/粘贴到同一个文本小部件中,您可以使用:

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

    【讨论】:

      猜你喜欢
      • 2019-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多