Перенос текста для списка и словаря в Python Tkinter - PullRequest
0 голосов
/ 05 ноября 2019

Я создал программу для выяснения всех возможных комбинаций набора чисел с помощью Python Tkinter. Но при выходе отправляем в GUI. Схемы вывода очень грязные (см. Рисунок).

Вывод моей программы

Я использовал wrap = 195 в output_text.configure, но он не приводил в порядоквыходной очень хорошо. Кроме того, я попытался использовать warp = "WORD", и он отправил эту ошибку:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:\Eclipse IDE\Workspace\OCR A-LEVEL Programming Challenges\PIN Code Sequencer.py", line 15, in btn1_clicked
    output_text.configure(text = "Output: " + str(output1), wrap="WORD")
  File "C:\Python\lib\tkinter\__init__.py", line 1637, in configure
    return self._configure('configure', cnf, kw)
  File "C:\Python\lib\tkinter\__init__.py", line 1627, in _configure
    self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: bad screen distance "WORD"

Я бы хотел, чтобы программа показывала 2 - 3 комбинации в строке.

Вот мои коды:

from tkinter import *
from itertools import *

window =Tk()
window.geometry("480x270")
window.title("PIN Code Combinations")

title1 = Label(window, text = "Input Numbers To Find Out All the Possible Combination!")
title1.grid(row = 0, column = 0)

input1 = Entry(window, width = 20)
input1.grid(row = 1, column = 0)

output_text = Label(window, text = "Output: ")
output_text.grid(row = 3, column = 0)

def btn1_clicked():
    temp = input1.get()
    output1 = list(permutations(temp))
    output_text.configure(text = "Output: " + str(output1), wrap=195)

btn1 = Button(window, text = "Calculate Combinations", command=btn1_clicked )
btn1.grid(row = 1, column = 1)

window.mainloop()

Python версии 3.8

1 Ответ

0 голосов
/ 05 ноября 2019

Самое простое решение - использовать модуль Python pprint для форматирования данных. Или вы можете написать свою собственную функцию для форматирования. Сам Tkinter не поддерживает форматирование данных.

Например,

import pprint
...
text = pprint.pformat(output1, indent=4)
output_text.configure(text = "Output: " + text, wrap=195)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...