Как получить ввод пользователя и передать этот ввод в функцию с Tkinter? - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь получить текст, введенный пользователем, а затем изменить регистр текста - например, если вы введете «привет», он выдаст «HeL10»

Это то, что мой Tkinter окно выглядит как

Вот код, который у меня есть:



from itertools import cycle
from tkinter import *


win = Tk()
win.title("Alternator")
win.resizable(0,0)


def Alternate():

   func = cycle([str.upper, str.lower])
   result = ''.join(next(func)(c) for c in entry.get() if c != '  ')
   return result




l1 = Label(win, text="Enter text: ")
entry = Text(win, width=50, height = 3, wrap=WORD)
button = Button(win, text="Alternator", width=20)
l2 = Label(win, text="Alternated text:")
output = Text(win, width=50, height=3, wrap=WORD)

l1.grid(row=1, column=1, padx=5, sticky=W)
entry.grid(row=2, column=1, columnspan=2, padx=5, pady=(0,10))
button.grid(row=3, column=1, columnspan=2, pady=5)
l2.grid(row=4, column=1, padx=5, sticky=W)
output.grid(row=5, column=1, columnspan=2, padx=5, pady=(0,10))

button.configure(command=Alternate)

win.mainloop()

Как правильно go сообщить об этой проблеме? Я встречал различные связанные вопросы, но ни один из них не отвечал на это на базовом c уровне

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

У меня есть несколько важных советов и фактов. Прежде всего, вместо использования виджета Text() вы можете использовать виджет Entry(), поскольку вы вводите только простые слова. Затем вы можете получить символы внутри Entry следующим образом:

variable = name_of_entry.get()

Затем вы можете изменить регистр букв и отображать буквы с беспорядочным регистром как простой текст в Label().

name_of_label.configure(text=variable)
0 голосов
/ 18 июня 2020

Чтобы получить текст, нужно указать 2 параметра entry.get(). Здесь - хороший ответ, объясняющий, какой именно. После этого вы должны установить текст с помощью output.insert(). Вы можете изменить это в зависимости от того, что вы хотите, прямо сейчас он добавляет новую строку с измененным текстом сверху.

def Alternate():
   func = cycle([str.upper, str.lower])
   result = ''.join(next(func)(c) for c in entry.get("1.0",END) if c != '  ')
   output.insert(END,result)
   #return result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...