Как мне отформатировать размещение текста в ярлыке (или другом виджете) в Python?

#python #user-interface #tkinter #text #format

#python #пользовательский интерфейс #tkinter #текст #формат

Вопрос:

Итак, у меня есть переменная с очень длинной строкой для ее значения. Эта строка будет отображаться пользователям в новом окне, чтобы они могли скопировать ее и вставить в программу. Итак, значение переменной отображается в ярлыке в новом всплывающем окне. Проблема в том, что весь текст переменной расположен горизонтально и в одну строку, поэтому он исчезает с экрана окна, что выглядит очень раздражающе и затрудняет копирование. Есть ли способ отформатировать его так, чтобы он выполнялся вертикально с полосой прокрутки в окне?

Комментарии:

1. можете ли вы предоставить то, что вы пробовали до сих пор, свой код или любую другую информацию, которая могла бы нам помочь?

2. Вы просмотрели все доступные виджеты? Существует множество руководств, в которых показаны все виджеты, которые вы можете использовать.

Ответ №1:

Я понял, что использование текстового поля работает лучше — вот веб-сайты: http://effbot.org/tkinterbook/text.htm

http://effbot.org/zone/tkinter-scrollbar-patterns.htm

и вот код, который я использовал:

 from tkinter import * #Import tkinter module
import csv #Import csv module
from tkinter import messagebox

# These lines define the main/parent window
root = Tk()
root.title("Main Window")
root.geometry("500x500")
root.configure(bg='white')

def NewwindowButton():
    # The following three lines define the sub-window
    info_window = Toplevel(root)
    info_window.title("This is the info window")
    info_window.geometry("300x400")

    # These lines define a frame inside the window,
    # and the text box inside that frame with the 
    # 'variable_with_text' variable supplying the text.
    variable_with_text = "Here is the text..."
    info_window_frame = Frame(info_window, bg="white")  
    info_window_frame.place(relwidth=1.0, relheight=1.0)
    text_widget = Text(info_window, bg="white")
    text_widget.place(relwidth=1.0, relheight=1.0)
    text_widget.insert(INSERT, variable_with_text)

    # These lines define a scrollbar for the text window
    text_scrollbar = Scrollbar(info_window)
    text_scrollbar.pack(side=RIGHT, fill=Y)

    # These lines link the text widget and scrollbar together
    text_widget.config(yscrollcommand=text_scrollbar.set)
    text_scrollbar.config(command=text_widget.yview)

new_window_button = Button(root, text="Open new window", 
command=NewwindowButton, bg="grey")
new_window_button.pack()
root.mainloop()