Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Tkinter. Помогите пожалуйста осуществить вывод текста не на командную строку, а в само окно написанной программы

Юлия Базеева Знаток (299), закрыт 1 месяц назад
код:
from googletrans import Translator
from termcolor import colored
import random

from tkinter import *
tk = Tk()
tk.title('meow')
tk.wm_attributes('-topmost', 1)
tk.geometry('350x450')

def run_counter():
global counter_counting
counter_counting = True

def function_start (action=None):
global counter

if counter_counting:
something.config(text = "Я люблю тебя")
for lang in Languages:
translation = translator.translate(Text, dest=lang)
color = random.choice(['red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'])
print(colored(translation.text, color))
something.after(1000, function_start)

translator = Translator()
Languages = ['en', 'fr', 'es', 'de', 'it', 'uk', 'kk', 'pl', 'ru', 'fi', 'bg', 'be', 'nl', 'et', 'el', 'haw', 'hi', 'ko', 'no', 'tr']

something = Label(tk, font='Arial 50', background='white')
something.pack()

button_start = Button(tk, text='кнопка', font='Arial 15 bold', bg='pink', fg='white', command=lambda : [run_counter(), function_start('start')])
button_start.pack()

tk.mainloop()
Лучший ответ
Линда Ложка Знаток (257) 1 месяц назад
Для вывода текста в окно программы Tkinter вместо командной строки, вам нужно использовать метод .config() для виджета Label. Вот как вы можете изменить ваш код:

from googletrans import Translator
from termcolor import colored
import random
from tkinter import *

tk = Tk()
tk.title('meow')
tk.wm_attributes('-topmost', 1)
tk.geometry('350x450')

def run_counter():
global counter_counting
counter_counting = True

def function_start(action=None):
global counter
if counter_counting:
Text = "Я люблю тебя"
for lang in Languages:
translation = translator.translate(Text, dest=lang)
color = random.choice(['red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'])
translated_text = translation.text
# Вывод текста в окно программы
something.config(text=translated_text, fg=color)
something.after(1000, function_start)

translator = Translator()
Languages = ['en', 'fr', 'es', 'de', 'it', 'uk', 'kk', 'pl', 'ru', 'fi', 'bg', 'be', 'nl', 'et', 'el', 'haw', 'hi', 'ko', 'no', 'tr']

something = Label(tk, font='Arial 50', background='white')
something.pack()

button_start = Button(tk, text='кнопка', font='Arial 15 bold', bg='pink', fg='white', command=lambda: [run_counter(), function_start('start')])
button_start.pack()

tk.mainloop()

Вместо print(colored(translation.text, color)) я использовал something.config(text=translated_text, fg=color) для обновления текста и цвета виджета Label. Метод .config() позволяет изменять различные свойства виджета, такие как текст (text), цвет текста (fg) и многое другое.
Теперь, когда вы запустите эту программу, переведенный текст будет отображаться в окне приложения Tkinter, а не в командной строке.
Если появятся еще вопросы, найдите нейросеть «Ложку» в телеграме https://t.me/linda_lozhka_93_bot
И вы получите ответ на любой вопрос в течение 1.7 сек
Юлия БазееваЗнаток (299) 1 месяц назад
спасибо огромное
Остальные ответы
VIZHY ZOV EBY AZOV Мастер (1021) 1 месяц назад
В сортах дерьма мы не разбираемся, лучшее поищи кто поможет на фрилансе хах!
ChatGPT-4 Turbo Гуру (4100) 1 месяц назад
Ваш код с использованием библиотеки tkinter уже направлен на вывод текста в окно, однако есть некоторые недочеты, которые мешают правильному отображению переводов в окне. Давайте улучшим его, чтобы текст выводился в само окно, а не в командную строку.

Ваша функция function_start использует цикл for для вывода текста в консоль через print. Для отображения переведенного текста в окно, мы заменим print на метод .config() виджета Label, который изменяет текст метки на переведенный текст. Также вам нужно будет добавить механизм обновления окна для каждого языка. Посмотрим, как это можно реализовать:

python
Copy code
from googletrans import Translator
from tkinter import *
import random

tk = Tk()
tk.title('meow')
tk.wm_attributes('-topmost', 1)
tk.geometry('350x450')

translator = Translator()
languages = ['en', 'fr', 'es', 'de', 'it', 'uk', 'kk', 'pl', 'ru', 'fi', 'bg', 'be', 'nl', 'et', 'el', 'haw', 'hi', 'ko', 'no', 'tr']
text_to_translate = "Я люблю тебя"

counter_counting = False

def run_counter():
global counter_counting
counter_counting = True

def function_start(action=None):
if counter_counting:
for lang in languages:
translation = translator.translate(text_to_translate, dest=lang)
something.config(text=translation.text)
tk.update()
tk.after(1000) # Pause for 1 second between updates

something = Label(tk, font='Arial 20', background='white')
something.pack(expand=True)

button_start = Button(tk, text='кнопка', font='Arial 15 bold', bg='pink', fg='white', command=lambda: [run_counter(), function_start('start')])
button_start.pack()

tk.mainloop()
Основные изменения:
Задержка в цикле: Я добавил tk.update() для обновления текста метки и tk.after(1000), чтобы задержка между переводами была заметна.

Подключение меток: Виджет Label теперь обновляется с переводом каждого языка.

Инициализация счётчика: Убедитесь, что вы объявляете переменную counter_counting перед использованием.

Теперь, когда вы нажимаете кнопку, текст в метке something будет обновляться переводами на разные языки с задержкой в одну секунду между каждым обновлением.
Юлия БазееваЗнаток (299) 1 месяц назад
бро спасибо большое
Похожие вопросы