GUI。用户输入。多行文本框

时间:2018-02-14 11:19:56

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

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

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

1 个答案:

答案 0 :(得分:0)

像这样( 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,则忽略。如果不忘记,则无法添加空行!