python - 如何在 tkinter 的列表框中打印字典列表
问题描述
我正在开发一个应用程序来在电子表格中搜索一些客户的开放费用,将其保存在字典中并在图形界面中打印。代码本身可以完美运行,但是,当列表最后变得太大时,其余内容将被截断。你能告诉我解决它的方法吗?
from tkinter import *
import openpyxl
root = Tk()
def hono_aberto():
newWindow = Toplevel()
newWindow.title("Output")
newWindow.geometry("400x350+375+50")
# Opens the spreadsheet and obtains the status of the last payment.
wb = openpyxl.load_workbook('C:/temp/cobranca.xlsx')
sheet = wb['Sheet1']
lastCol = sheet.max_column
# latestMonth = sheet.cell(row=1, column=lastCol).value
# Checks the payment status of each customer.
unpaidMembers = {}
clients = []
months = []
emails = []
for r in range(2, sheet.max_row + 1):
for c in range(3, lastCol + 1):
payment = sheet.cell(row=r, column=c).value
if payment != 'ok':
client = sheet.cell(row=r, column=1).value
email = sheet.cell(row=r, column=2).value
month = sheet.cell(row=1, column=c).value
clients.append(client)
months.append(month)
emails.append(email)
unpaidMembers[client] = email
print('Line:', r, 'Column:', c, 'Client:', client, 'Email:', email, 'Month:', month)
#--- LABELS ---#
l_label1 = Label(newWindow, text="Client", font='-weight bold')
l_label1.grid(row=1, column=1)
l_label2 = Label(newWindow, text="Competence", font='-weight bold')
l_label2.grid(row=1, column=2)
l_label3 = Label(newWindow, text="E-mail", font='-weight bold')
l_label3.grid(row=1, column=3)
v_result1 = StringVar()
l_cliente = Label(newWindow, textvariable=v_result1)
l_cliente.grid(row=2, column=1)
v_result2 = StringVar()
l_mes = Label(newWindow, textvariable=v_result2)
l_mes.grid(row=2, column=2)
v_result3 = StringVar()
l_email = Label(newWindow, textvariable=v_result3)
l_email.grid(row=2, column=3)
#--- OUTPUT ---#
v_result1.set('\n'.join(clients))
v_result2.set('\n'.join(months))
v_result3.set('\n'.join(emails))
bt = Button(root, text='Check', command=hono_aberto)
bt.grid(row=1, column=1)
root.mainloop()
这是使用的电子表格模型:https ://prnt.sc/123sxpd
解决方案
可能是因为文本区域不够用。您可以做的一件事是每页显示 10 或 15 个客户端(您决定,无论看起来有用)数据。这应该是你开始的地方。
https://www.geeksforgeeks.org/tkinter-application-to-switch-between-different-page-frames/
然后您要做的是每次单击新页面按钮时更改显示。这应该可以解决您的问题
推荐阅读
- django - DRF M2M 嵌套序列化器字段错误地键入为字符串
- algorithm - 当我们评估运行时,不等式符号重要吗?
- html - HTML 电子邮件 iPhone 媒体查询全宽 TD 不起作用
- pandas - concise way of flattening multiindex columns
- linux - 我有 apache 软件版本的文件记录,需要根据版本对它们进行排序
- javascript - Jquery + html5:预检响应具有无效的 HTTP 状态代码 405
- java - PSQLException:在此 ResultSet 中找不到列名“blah”
- javascript - 未选中一个复选框时如何取消选中以下所有复选框
- apache-spark - Spark CountVectorizer 返回一个 TinyInt
- python - 将 Pygamescreens 高效加载到 2D 列表