特金特。在输入框中按回车键。附加到文本框。怎么用?

2024-04-29 07:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个聊天程序,决定使用Tkinter作为界面。

我想做的是在C#微风,但Tkinter对我来说是新的。

基本上我有一个带有输入控件和文本控件的表单。

我想知道如何在用户按Enter之后将文本从Entry控件追加到文本控件。

这是我目前的代码:

from tkinter import *

class Application:

    def hello(self):
        msg = tkinter.messagebox.askquestion('title','question')

    def __init__(self, form):
        form.resizable(0,0)
        form.minsize(200, 200)
        form.title('Top Level')

        # Global Padding pady and padx
        pad_x = 5
        pad_y = 5

        # create a toplevel menu
        menubar = Menu(form)
        #command= parameter missing.
        menubar.add_command(label="Menu1")
        #command= parameter missing.
        menubar.add_command(label="Menu2")
        #command= parameter missing.
        menubar.add_command(label="Menu3")

        # display the menu
        form.config(menu=menubar)

        # Create controls

        label1 = Label(form, text="Label1")
        textbox1 = Entry(form)
        #command= parameter missing.
        button1 = Button(form, text='Button1')

        scrollbar1 = Scrollbar(form)
        textarea1 = Text(form, width=20, height=10)

        textarea1.config(yscrollcommand=scrollbar1.set)
        scrollbar1.config(command=textarea1.yview)

        textarea1.grid(row=0, column=1, padx=pad_x, pady=pad_y, sticky=W)
        scrollbar1.grid(row=0, column=2, padx=pad_x, pady=pad_y, sticky=W)
        textbox1.grid(row=1, column=1, padx=pad_x, pady=pad_y, sticky=W)
        button1.grid(row=1, column=2, padx=pad_x, pady=pad_y, sticky=W)

        form.mainloop()

root = Tk()
Application(root)

Tags: formparametercolumncommand控件gridrowpad
1条回答
网友
1楼 · 发布于 2024-04-29 07:26:22

所以您使用的是一个tkinter.Text框,它支持.insert方法。我们用它吧!

def __init__(self,form):

# Lots of your code is duplicated here, so I'm just highlighting the main parts

    button1 = Button(form, text='Button1', command = self.addchat)
    self.textbox = textbox1 # to make it accessible outside your __init__
    self.textarea = textarea1 # see above

    form.bind("<Return>", lambda x: self.addchat())
    # this is the magic that makes your enter key do something

def addchat(self):
    txt = self.textbox.get()
    # gets everything in your textbox
    self.textarea.insert(END,"\n"+txt)
    # tosses txt into textarea on a new line after the end
    self.textbox.delete(0,END) # deletes your textbox text

相关问题 更多 >