【问题标题】:why does openpyxl not working with tkinter?为什么 openpyxl 不能与 tkinter 一起使用?
【发布时间】:2022-01-07 12:08:38
【问题描述】:

我是一个小程序员,我在使用 openpyxl 和 Tkinter 组合时遇到了一些问题。 我正在用 Gui 制作一个 Excel 编辑器,但是当我使用它时,它没有编辑过一个单元格。 代码的详细信息是:

Python 3.9,使用的模块:仅 Tkinter 和 openpyxl

import tkinter as tk
from openpyxl import *


#Excel FIle Setup
xlfile = load_workbook(filename="main.xlsx")
sheet = xlfile.active

#Defining Save Function
def save():
    cell = cellIn
    xlfile.save(filename="main.xlsx")

#Main Window Setup
app = tk.Tk(screenName='Excel Editor', baseName='Gui for Editing', className='Excel Editor', useTk=1)
app.title('Excel Editor')
frame = tk.Frame(app)
frame.pack()

#Cell Name Block and Entry
tk.Label(frame, text = "Cell Name :").grid(row=0)
one = tk.StringVar()
cellNameEntry = tk.Entry(frame, text = one).grid(row = 0, column = 1)
cell = (one.get())

#Cell Input Block and Entry
tk.Label(frame, text = "Cell Input :").grid(row=1)
two = tk.StringVar()
cellInput = tk.Entry(frame, two).grid(row=1, column = 1)
cellIn = (two.get())

#SAVE Button With Quit Button
tk.Button(frame, text="SAVE", command=save).grid(row = 2)
tk.Button(frame, text="QUIT", command=quit).grid(row = 2, column = 1)

app.mainloop()

我在我的代码中看不到任何错误,但如果有,请回答。 这是我的第一个问题,所以我使用了非常正式、温和的语言

【问题讨论】:

  • 我没有看到任何修改工作表的代码。
  • 不,我已将其作为 save() 函数,因为要修改的 openpyxl 命令是 sheet['cell_name'] = 'cell_content' 所以我使用 [cell {variable}] 作为 cell_name 和 [ cellin {variable}] 作为 cell_content
  • 但如果我犯了任何错误,请帮忙修复它。
  • Tk 代码与 openpyxl 并没有真正的联系:没有任何东西可以修改任何东西,所以 save 不会改变任何东西。

标签: python excel user-interface tkinter openpyxl


【解决方案1】:

您发布的代码中实际上没有代码会更新工作表的任何单元格。

以下是基于您的代码更新用户指定的单元格的简单示例:

import tkinter as tk
from openpyxl import load_workbook

xlfile = load_workbook(filename='main.xlsx')
sheet = xlfile.active

def save():
    xlfile.save(filename='main.xlsx')

def update():
    sheet[cell.get()] = value.get()

app = tk.Tk()
app.title('Excel Editor')

frame = tk.Frame(app)
frame.pack()

tk.Label(frame, text='Cell Name:').grid(row=0, column=0)
cell = tk.StringVar()
tk.Entry(frame, textvariable=cell).grid(row=0, column=1)

tk.Label(frame, text='Cell Value:').grid(row=1, column=0)
value = tk.StringVar()
tk.Entry(frame, textvariable=value).grid(row=1, column=1)

tk.Button(frame, text='Update Cell', command=update).grid(row=2, column=1)
tk.Button(frame, text='Save', command=save).grid(row=3, column=0)
tk.Button(frame, text='Quit', command=app.destroy).grid(row=3, column=1)

app.mainloop()

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 2018-03-09
    • 2021-06-14
    • 2012-10-09
    • 2020-03-18
    • 2017-11-21
    • 2019-04-11
    • 2012-09-19
    • 2013-12-30
    相关资源
    最近更新 更多