t按所有按钮打开同一个fi

2024-04-20 07:07:07 发布

您现在位置:Python中文网/ 问答频道 /正文

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

问题是,所有的按钮总是打开文件中的最后一个文件配置.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()

Tags: 文件inimportmasterforossysline
1条回答
网友
1楼 · 发布于 2024-04-20 07:07:07

也许试试

from functools import partial

使用

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

partial对象是使用i的当前值创建的,而lambda 在封闭范围中使用对变量i的引用,该变量的值可以更改。 或者类似的。你知道吗

我发现自己总是用partial和tkinter。你知道吗

相关问题 更多 >