Передайте значение из записи Tkinter в переменную, нажав «ENTER» - PullRequest
0 голосов
/ 24 февраля 2019

Я хочу сделать свой собственный терминал с Tkinter, чтобы иметь полный контроль над всем, что происходит в терминале.Моя проблема в том, что я не знаю, как слушать, как пользователь нажимает клавишу ВВОД, чтобы отправить команду программе, чтобы программа могла выполнить введенную команду.Я искал в Интернете, но я не могу найти решение этой проблемы.Поэтому я хочу отправить строковое значение в переменную через поле ввода, чтобы программа могла обработать переменную одним нажатием клавиши ВВОД.Есть ли простое решение для этого?Это мой код:

#Needed modules in the future
import time, os, sys, logging
from pynput import *
from tkinter import *

#The variable that stores the input
userin = ''

#Creating window
root = Tk()
root.geometry('1080x660')
root.title('Terminal')
root.configure(bg="black")

#Making my entrybox
Entry(root, textvariable=userin, fg='lime', bg='black').grid()

#The regular mainloop :)
root.mainloop()

1 Ответ

0 голосов
/ 24 февраля 2019

Вам не хватает трех вещей: сохраненной ссылки на Entry (или StringVar для него, но в этом случае это не обязательно), привязки для клавиши Enter ифункция, которая делает все, что вы хотите сделать с содержимым этого виджета.

Измените эту строку, которая создает виджет Entry, но не предоставляет ссылки на него:

Entry(root, textvariable=userin, fg='lime', bg='black').grid()

к этому:

e = Entry(root, textvariable=userin, fg='lime', bg='black')
e.grid()
def process(event=None):
    content = e.get() # get the contents of the entry widget
    print(content) # for example
# bind enter key (called return in tkinter) to the entry widget and
# connect it to the process function
e.bind('<Return>', process)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...