Как распечатать список кортежей с помощью метки в TkInter? - PullRequest
0 голосов
/ 06 августа 2020

Я делаю программу обработки рецептов, используя Python и TkInter. У меня есть список, содержащий кортежи => (ингредиент, количество). Мне нужно использовать ярлык, чтобы разместить его на экране. Я хочу удалить кавычки и скобки списка, т.е. [], но я хочу сохранить скобки кортежа, т.е. ()

mylist = [('a','2'),('b','4')]

Я пробовал повторять список, но он просто помещает элементы по одному над другим и не показывает все.

Ожидаемый результат

Ingredients: (a,2), (b,4)

Ответы [ 3 ]

2 голосов
/ 06 августа 2020

Попробуйте:

', '.join(f"({', '.join(str(x) for x in item)})" for item in mylist)
2 голосов
/ 06 августа 2020

Приведенный ниже код избавляется от '' в a и b:

from tkinter import *

root = Tk()

myList = [('a',2),('b',4)]

for index,item in enumerate(myList):
    Label(root,text=f'Ingredients: {item}').pack(pady=index+10)

root.mainloop()

Но в этом примере я получил его разделить без '', но здесь кортеж больше не кортеж, а вместо этого обычный текст, который выглядит как кортеж. Попробуйте (ответ @ acw1668 дал мне подсказку)

from tkinter import *

root = Tk()

myList = [('a', '2'), ('b', '4')] #your initial list
final = [] #making an empty list to populate later on

new = (', '.join(f"({', '.join(str(x) for x in item)})" for item in myList)) # removing the quote and creating a single word

item1 = new[0:6] #splitting into two tuples by slicing
item2 = new[8:14] #doing the same with second item

final.append(item1) #appending it to the final list
final.append(item2) #doing the same 

for index,item in enumerate(final): #looping through the list giving each item in the list a number
    Label(root,text=f'Ingredients: {item}').pack(pady=index+10) #placing it on the screen with label and packing with padx

root.mainloop()

Надеюсь, это помогло, дайте мне знать, если возникнут еще ошибки: D

Ура

1 голос
/ 06 августа 2020

Для этого требуется специальный метод toString. Это может быть что-то вроде этого:

def toString(arg):
    string = "Ingredients: "
    for part in arg:
        string += str(part) + ", "
    return string
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...