不确定如何使用 tkinter 和 openpyxl 管理我的 variables/data:fstring 问题

Unsure how to manage my variables/data using tkinter and openpyxl: fstring issue

我正在 Raspberry Pi(如果它完全相关)上创建一个应用程序,它需要访问来自传播sheet 的特定单元格的数据,以便将设置显示为按钮文本。有多个 'modes'、设置和按钮。可能需要更新的按钮各不相同,我已经用布尔变量指定了它。需要在指定按钮上显示的文本也可以因时间和工作而异sheet。我能够创建一个变量来保存时间,然后使用嵌套的 f 字符串能够显示来自正确单元格的数据:

current_time = datetime.now().strftime('%H')
cell_number = int(current_time)+2
bool = True

def update_button():
    if bool == True:
        button.config(text=f"{ws_sheet[f'A{cell_number}'].value}")
    else:
        button1.config(text=f"{ws_sheet[f'B{cell_number}'].value}")

这很好用,但我现在还需要根据不同的变量更改 sheet。我试过了,但它产生了 fstring 语法错误。

current_time = datetime.now().strftime('%H')
cell_number = int(current_time)+2
bool = True
worksheet = some_worksheet 

def update_button():
    if bool == True:
        button.config(text=f"{{worksheet}[f'A{cell_number}'].value}")
    else:
        button1.config(text=f"{{worksheet}[f'B{cell_number}'].value}")

产生的语法错误:

button.config(text=f"{{worksheet}[f'A{cell_number}'].value}")
                  ^
SyntaxError: f-string: single '}' is not allowed

这对我来说似乎也是一个违反直觉的错误。

我很乐意接受这样一个事实,即我可能正在以完全错误的方式进行此操作,并且为了我自己的自我,我不得不说我这样做的时间并不长。我知道我可以通过大量 if/else 语句来实现我想要的,但我希望做一些更优雅的事情。

非常感谢任何帮助。

您可以在调用函数时传递作业 sheet。

def update_button(ws_sheet):
    if bool == True:
        button.config(text=f"{ws_sheet[f'A{cell_number}'].value}"
    else:
        button1.config(text=f"{ws_sheet[f'B{cell_number}'].value}"