Вывести двухстрочную строку как однорядную строку Tkinter - PullRequest
0 голосов
/ 06 июля 2018

Я написал код, который берет значение (текст) из текстового виджета и печатает его. Я заметил, что при вводе текста в две строки (или более) он печатается в две строки (или более).

Какой код я должен написать, чтобы он всегда печатал текст в одной строке, независимо от того, сколько строк в текстовом виджете? Текст должен быть отделен пустыми пробелами в строках тормозов.

Код:

from tkinter import*

myApp=Tk()

t=Text(myApp, width=20, height=20)
t.grid(row=0, column=0, padx=10, pady=10)

def printText():

    s = str(t.get('1.0', "end-1c"))    
    print(s)

but= Button(myApp, text="print", command=printText)
but.grid(row=0,column=1)

myApp.mainloop()

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Вам просто нужно заменить символ переноса строки (\n) пробелом.

def printText():
    s = t.get('1.0', "end-1c")
    print(s.replace('\n', ' '))
0 голосов
/ 06 июля 2018

Я бы разбил строку в конце строки, а затем соединил слова в конечную строку для печати. ​​

Сначала мы создаем список каждой строки. Затем мы объединяем каждую строку в одну строку. Затем мы печатаем окончательный результат в консоль.

Примечание: я обновил ваш код, чтобы он больше соответствовал PEP8 и предпочтительному способу импорта для tkinter.

import tkinter as tk

root = tk.Tk()

t = tk.Text(root, width=20, height=5)
t.grid(row=0, column=0, padx=10, pady=10)

def print_text():
    row_list = t.get('1.0', "end-1c").split("\n")
    final_string = ""

    for item in row_list:
        final_string = "{} {}".format(final_string, item)  

    print(final_string.strip())

but = tk.Button(root, text="print", command=print_text)
but.grid(row=0,column=1)

root.mainloop()

Результаты:

enter image description here

Консоль

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...