前提・実現したいこと
Python初心者です。
tkinterウィンドウ上にExcelからのアルファベットリストをラベルによって縦表示することはできましたが,アルファベットの時のようなコードを書いても数値リストを縦表示することができませんでした。
↓Excel画面
該当のソースコード
流れとしてExcel画面を作成し,①の.pyファイルを作る。そして①を引用する箇所があるため,②を作ります。アルファベット表示は縦表示でtkinterウィンドウに表示されましたが,数値表示が縦でなく横表示のままになってしまいます。
↓①上記の画面にシートを追加し備品名や個数を追記するプログラムです。
import openpyxl workbook = openpyxl.load_workbook('備品表.xlsx') sheet = workbook["Sheet1"] suppliers = [] for i in range(3, 21): cell_value = sheet.cell(row=i, column=1).value if cell_value not in suppliers: suppliers.append(cell_value) print(suppliers) transaction_amounts = [] for i in suppliers: transaction_amount = 0 for j in range(3, 21): supplier = sheet.cell(row=j, column=1).value if supplier == i: transaction_amount += sheet.cell(row=j, column=2).value transaction_amounts.append(transaction_amount) print(transaction_amounts) new_sheet = workbook.create_sheet("") print(workbook.worksheets) new_sheet["A1"] = "備品名" new_sheet["B1"] = "備品個数" for i, j, k in zip(list(range(3, 21)), suppliers, transaction_amounts): new_sheet.cell(row=i, column=1, value=j) new_sheet.cell(row=i, column=2, value=k) print(list(new_sheet.values)) workbook.save("備品表.xlsx")
↓②tkinterウィンドウ上に備品名(アルファベット)と備品個数(数値)を縦表示したいプログラム
import tkinter import openpyxl root = tkinter.Tk() root.title(u"Software Title") root.geometry("400x300") # 備品表呼び出し workbook = openpyxl.load_workbook('備品表.xlsx') sheet = workbook["Sheet1"] # 備品名リスト作成 suppliers = [] for i in range(3, 21): cell_value = sheet.cell(row=i, column=1).value if cell_value not in suppliers: suppliers.append(cell_value) # 備品名をラベル表示 print(suppliers) a = '\n'.join(suppliers) txt1 = tkinter.Label(root, text=a, font=('Helvetica', '15')) txt1.place(x=20, y=20) # 備品個数リスト作成 transaction_amounts = [] for i in suppliers: transaction_amount = 0 for j in range(3, 21): supplier = sheet.cell(row=j, column=1).value if supplier == i: transaction_amount += sheet.cell(row=j, column=2).value transaction_amounts.append(transaction_amount) print(transaction_amounts) txt1 = tkinter.Label(root, text=transaction_amounts, font=('Helvetica', '15')) txt1.place(x=80, y=20) root.mainloop()
↓③ ②の該当部分
# 備品個数リスト作成 transaction_amounts = [] for i in suppliers: transaction_amount = 0 for j in range(3, 21): supplier = sheet.cell(row=j, column=1).value if supplier == i: transaction_amount += sheet.cell(row=j, column=2).value transaction_amounts.append(transaction_amount) print(transaction_amounts) txt1 = tkinter.Label(root, text=transaction_amounts, font=('Helvetica', '15')) txt1.place(x=80, y=20)
試したこと
txt1 = tkinter.Label(root, text=transaction_amounts, font=('Helvetica', '15'))
transaction_amountsをstrで文字列扱いにして'\n'.joinで改行をしてみましたが,[]が含まれていたり一文字ずつ改行されたりなどうまく表示されませんでした。
Pythonをはじめて日は浅く,知識不足ゆえ何卒ご教示お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。