簡體   English   中英

打印列表到Tkinter標簽

[英]Printing list to Tkinter Label

嘗試將reviews數組作為列表打印到我的標簽上,這樣它就不會單行出現。

import pandas as pd
import numpy as np
from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import showwarning, showinfo

movies = pd.read_csv('C:/Users/Admin/Python Programs/ml-latest-small/movies.csv')
ratings = pd.read_csv('C:/Users/Admin/Python Programs/ml-latest-small/ratings.csv')

ratings.drop(['timestamp'], axis=1, inplace= True)  

class App(Frame):

    def replace_name(x):
      return movies[movies['movieId']==x].title.values[0]

    ratings.movieId = ratings.movieId.map(replace_name)

    M = ratings.pivot_table(index=['userId'], columns=['movieId'], values='rating')

    def pearsons(s1, s2):
        s1_c = s1 - s1.mean()
        s2_c = s2 - s2.mean()
        return np.sum(s1_c * s2_c) / np.sqrt(np.sum(s1_c ** 2) * np.sum(s2_c ** 2))

    def get_recs(self):
        movie_name = self.mn.get()
        num_recs_str = self.nr.get()
        num_recs = int(num_recs_str)
        reviews = []
        for title in App.M.columns:
            if title==movie_name:
                continue
            cor = App.pearsons(App.M[movie_name], App.M[title])
            if np.isnan(cor):
                continue
            else:
                reviews.append((title, cor))

        reviews.sort(key=lambda tup: tup[1], reverse=True)
        for x in reviews:
            self.label3.config(text= "\n" + str(reviews[:num_recs]))
        #self.label3.config(text=reviews[:num_recs])
        return reviews[:num_recs]

    def __init__(self, master):

        Frame.__init__(self, master)
        self.filename = None
        label1=Label(master, text="Movie: ").grid(row=0)
        label2=Label(master, text="Recommendations: ").grid(row=1)
        self.label3=Label(master, text = "", font = 'Purisa', fg='blue')
        self.label3.grid(row = 3)
        self.mn = Entry(master)
        self.mn.grid(row = 0, column = 1)
        #self.mn.delete(0, END)
        self.mn.insert(0, "Enter Movie Name")
        self.nr = Entry(master)
        self.nr.grid(row = 1, column = 1)
        #self.nr.delete(0, END)
        self.nr.insert(0, "Enter Number of Recommendations")
        button1 = Button(self, text="Start", command=self.get_recs)
        button2 = Button(self, text="Exit", command=master.destroy)
        button1.grid(row = 2, padx= 5)
        button2.grid(row = 2, column = 1, padx = 5)
        self.grid()

root = Tk()
root.title("Recommender")
root.geometry("500x500")
app = App(root)
root.mainloop()

這是當前輸出的圖像

我無法修改您的代碼,因為我沒有在代碼中打開的文件。 但是,這是解決您的問題的一種主意:

from tkinter import *
things_to_print=['something','one thing','another']
root=Tk()
for i in range(len(things_to_print)):
    exec('Label%d=Label(root,text="%s")\nLabel%d.pack()' % (i,things_to_print[i],i))
root.mainloop()

我認為您可以通過將您的reviews替換為我的things_to_print以及其他一些細微修改來解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM