gpt4 book ai didi

python - TkInter 所有按钮打开同一个文件

转载 作者:行者123 更新时间:2023-12-01 05:13:57 27 4
gpt4 key购买 nike

我写了这个小程序。它从配置文件中读取几个文件名(主要是 PDF),并为每个文件创建一个按钮,该按钮应使用默认应用程序打开该文件。

问题是,所有按钮总是打开 config.ini 文件中的最后一个文件。这种行为告诉我 for 循环一定有问题,但我不知道如何修复它。

有什么想法吗?

from tkinter import *
import subprocess, os, sys

def opendoc(file):
if sys.platform == 'linux':
subprocess.call(["xdg-open", file])
else:
os.startfile(file)

ini = open('config.ini')
carray = []

for line in ini:
carray.append(line)

for line in carray:
print(line)

master = Tk()

for i in carray:
Button(master, text=i, command=lambda: opendoc(i)).pack(anchor=W)

mainloop()

最佳答案

也许可以尝试一下

from functools import partial

并使用

Button(master, text=i, command=partial(opendoc, i))

部分对象是使用 i 的当前值创建的,而 lambda使用对封闭范围内变量 i 的引用,该变量的值可以更改。或者类似的东西。

我总是发现自己在 tkinter 中使用partial。

关于python - TkInter 所有按钮打开同一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23612511/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com