Как отобразить результат функции в метке, которая возвращает элементы списка? - PullRequest
1 голос
/ 07 ноября 2019

Мне нужно написать программу, которая сначала читает адреса электронной почты из файла CSV, а затем рисует 5 из них. Я хотел бы, чтобы это отображалось в настольном приложении. Я не знаю, как отобразить результат функции в поле метки после нажатия кнопки.

import csv
import random
import tkinter as tk
from tkinter import messagebox
 
with open('test.csv') as csv_plik:
    csv_reader = csv.reader(csv_plik, delimiter=',')
 
    numbers = []
    for row in csv_reader:
        number = row[0]
        numbers.append(number)
 
lenght = len(numbers)
 
def losowanie():
    i = 0
    z = 1
    while i < 5:
        lenght = len(numbers)
        y = lenght
        c = random.randint(0, y - z)
        print(numbers[c])
        numbers.remove(numbers[c])
        i+=1
 
main = tk.Tk()
main.geometry('400x400')
w = tk.Button(main, text = 'Losuj', command = main.destroy)
w.place(x=180, y=180)
 
y = tk.Label(main, text='losowanie')
y.pack()
y.place(x = 180, y = 220)
main.mainloop()

1 Ответ

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

Чтобы получить 5 случайных значений из списка, вы можете использовать

values = random.choices(numbers, k=5)

, затем вам нужно преобразовать список в одну строку

new_text = ','.join(values)

и, наконец, вы можете заменить текст в метке

label['text'] = new_text

И вы должны назначить функцию кнопке

command=losowanie

import csv
import random
import tkinter as tk

# --- functions ---

def losowanie():
    values = random.choices(numbers, k=5)
    new_text = ','.join(values)
    label['text'] = new_text

# --- main ---

with open('test.csv') as csv_plik:
    csv_reader = csv.reader(csv_plik, delimiter=',')

    numbers = []
    for row in csv_reader:
        number = row[0]
        numbers.append(number)


main = tk.Tk()

button = tk.Button(main, text='Losuj', command=losowanie)
button.pack()

label = tk.Label(main, text='losowanie')
label.pack()

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