【问题标题】:GUI. User input. Multi-line text box图形用户界面。用户输入。多行文本框
【发布时间】:2018-07-24 22:51:42
【问题描述】:

需要一个简单的 GUI,用户可以在其中输入多行文本。这是我的代码如何从表单中获取值?我也必须手动创建按钮吗? 我喜欢gooey 模块的简单性,但它似乎无法制作多行文本框?完成该主题的最佳方法是什么?

import tkinter as tk
root=tk.Tk()
text=tk.Text(root)
text.pack()
root.mainloop()

【问题讨论】:

  • 创建一个或两个按钮有什么问题?您实际上并不 需要 按钮,您可以告诉 Text 小部件在其内容被修改时调用回调函数,但是拥有一个用户可以在完成后单击的按钮使处理更简单。
  • @PM2Ring 只是在徘徊有什么东西会自动把那些生活质量改善按钮?我只需要一个简单的表格。
  • 抱歉,我认为没有自动的方法。当然,可以构建一个包含 Text 小部件和“提交”按钮的 Frame 小部件,并且可能有很多关于 SO 的示例可供您借鉴。
  • 问题是什么?
  • 答案是:text.get('1.0', 'end-1c')?

标签: python windows python-3.x user-interface tkinter


【解决方案1】:

像这样(Python2.7):

from Tkinter import *
root=Tk()
text=Text(root)
text.pack()
gui = {}
gui["text"] = text
def keyUp(e):
    print e.keycode
    oldText = gui["text"].get(1.0,END)
    oldText = oldText[:-1] if (oldText[-1] == u"\n") else oldText
    if e.keycode in (36,104) :
        gui["text"].delete(1.0,END)
        if  ord(oldText[-1]) != 10 :
            newText = oldText + "\n"
            gui["text"].insert("1.0",newText)
        else :
            gui["text"].insert("1.0",oldText)
        gui["text"].update()


gui["text"].insert(1.0,u"Re hello\nWorld\n")

gui["text"].bind("<KeyRelease>", lambda  event: keyUp(event))
root.mainloop()

抑制键盘上的所有换行符。(我得到 36(alpha),104(numlock))。某些操作系统可能能够在书写框中添加行(我的大 Enter 键)。如果最后一个字符是换行符oldText = oldText[:-1] if (oldText[-1] == u"\n") else oldText,则忽略。不忘记,不能加空行!

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 1970-01-01
    • 2017-10-12
    • 2016-06-18
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多