python Tkinter Entry 输入框多行数据如何显示

请问大佬,我运用python 的Tkinter里面 Entry函数,在对话框中输入一段很长的文本时,

图片描述

from tkinter import *
import easygui 

master = Tk()

frame = Frame(master)  # 确定一个框架用于美观

frame.pack(padx = 20,pady = 20)

v1 = StringVar() # 分别用于储存需要计算的数据和 结果
v2 = StringVar()
v3 = StringVar()

e1 = Entry(frame,width=10,textvariable=v1,validate='key',\
           ).grid(row=0,column=0,pady=10) 
Label(frame,text='+',padx=10).grid(row=0,column=1)

e2 = Entry(frame,width=10,textvariable=v2,validate='key',\
           ).grid(row=0,column=2)
Label(frame,text='=',padx=10).grid(row=0,column=3)

e3 = Entry(frame,width=15,textvariable=v3,state='readonly').grid(row=0,column=4)

def calc():
    if v1.get()=='':
        easygui.msgbox('请先输入内容 !')
        return 
    result = v1.get() + v2.get()
    v3.set(result)

Button(frame,text='计算结果',command=calc).grid(row=1,column=2,pady=5)
mainloop()
阅读 18.7k
3 个回答

用text框 可以了 记录下

from tkinter import *
import tkinter as tk
import easygui 
import requests

master = Tk()
from tkinter import ttk
ttk.Label(master,text='标题:').grid(row=0,column=0)
e1 =  ttk.Entry(master,
            width=44,
            font=('StSong', 14),
            foreground='green')
e1.grid(row=1)
ttk.Label(master,text='内容:').grid(row=2,column=0)

e2 = Text(master,
            width=44,
            height=4,
            font=('StSong', 14),
            foreground='gray')
e2.grid(row=3,column=0)
# 创建Scrollbar组件,设置该组件与text2的纵向滚动关联
scroll = Scrollbar(master, command=e2.yview)
scroll.grid(row = 3,sticky = tk.N + tk.S+tk.E)
#scroll.pack(side=RIGHT, fill=Y)
## 设置text2的纵向滚动影响scroll滚动条
e2.configure(yscrollcommand=scroll.set)

def calc():
    if e1.get()=='':
        easygui.msgbox('请先输入内容 !')
        return
    if e2.get(1.0, END)=='':
        easygui.msgbox('请先输入内容 !')
        return 
    user_info = {'title':e1.get(),
                 'content':e2.get(1.0, END)}
    r = requests.post("http://127.0.0.1:5000/cluster/", data=user_info)
    e3.insert(INSERT, r.text)

Button(master,text='提交',command=calc,width=10, height=1).grid(row = 4)
e3 = Text(master,
            width=44,
            height=4,
            font=('StSong', 14),
            foreground='gray')
e3.grid(row = 5)

# 创建Scrollbar组件,设置该组件与text2的纵向滚动关联
scroll = Scrollbar(master, command=e3.yview)
scroll.grid(row = 5,sticky = tk.N + tk.S+tk.E)
e3.configure(yscrollcommand=scroll.set)

mainloop()

展示多行的时候,使用Message组件

使用方法:创建一个message, 给它传递一个text字符串。然后这个控件会自动帮你分行。

from Tkinter import *

master = Tk()

w = Message(master, text="this is a message")
w.pack()

mainloop()

更多用法

你自己都已经说出了你的需求,你需要多行,那就应该去找多文本组件,Text这个组件可以满足你的需求

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题