Tkinter - 在Windows资源管理器中打开文件夹的方法

4

我一直在研究Tkinter,最近制作了一个小程序来监视文件夹并检查里面有多少文件。

我想创建按钮以打开Windows资源管理器中的文件夹,但我找不到任何相关信息。

有人有什么想法吗?

谢谢,Jon

感谢您的快速回复,我已经尝试了类似的东西,但可能做错了什么。这是我的代码:

def open():
    os.system("explorer C:\\ folder dir")

label1 = Button(self, text="Pre TC", fg="red", font=("Ariel", 9, "bold"), command=open)

1
os.system('start C:/Users/') 是什么意思? - TigerhawkT3
嘿,我刚刚在问题中添加了一些我的原始代码,虽然我可能做错了一些事情,但如果需要,我可以添加所有内容。 - Jon.H
5个回答

1
感谢大家的帮助,正是你们的回答结合在一起才解决了这个问题!
我还不完全明白为什么我的操作有效,但我将self作为open()的参数(即open(self)),并将其作为命令添加到self.open中。因此,我在我的问题中编辑后的代码如下:
def open(self):
    os.system("start C:/folder dir/")

button1= Button(self, text="Pre TC", fg="red", font=("Ariel", 9, "bold"), command=self.open)

(还更改了按钮的名称)

如果有人知道为什么需要自我参数,或者可以指向更多信息的方向,那将不胜感激。

干杯! Jon


1

您不能在标签项上使用命令选项。尝试将其更改为按钮,这样它就可以工作了!


这不是一个按钮吗?我知道我称它为label1(令人困惑和愚蠢),但之后我声明它应该是一个按钮,对吧?(可能是错的哈哈)我在按下按钮时检查了cmd,然后得到了这个响应:Tkinter回调中的异常 Traceback(最近的调用最先): File“C:\ Python27 \ lib \ lib-tk \ Tkinter.py”,第1470行,在__call__中 返回self.func(* args) TypeError:找不到必需的参数'name'(pos 1) - Jon.H
我的错误,没有注意到那个。 - nihal111

1

当您调用与label1或button1是对象的相同类名下定义的函数时,必须使用self。否则,由于找不到该函数,您将收到Tkinter回调异常。

这就是为什么将open重命名为self.open的原因。


1

您可以使用终端命令来完成此操作,并创建一个按钮来调用此函数。在Windows中的示例:

from tkinter import *       
from tkinter.ttk import *
import os
 
# opening any folder 
def openFolder():
    path='C:'
    command = 'explorer.exe ' + path
    os.system(command)

root = Tk()         
root.geometry('100x100')    
btn = Button(root, text = 'Click me !',command = openFolder)
btn.pack(side = 'top')    
root.mainloop()

其他有趣的终端命令:

import os

# opening files
file = 'test.md'
command = 'start ' + file
os.system(command)

# opening current folder 
command = 'explorer.exe .'
os.system(command)

# opening any folder 
path='C:'
command = 'explorer.exe ' + path
os.system(command)

使用命令

0
我注意到的一件事是路径对斜杠或反斜杠非常敏感。使用 os.system 时,“C:/folder”无法工作,它只会从某个默认文档文件夹开始运行。而“C:\folder”可以正常工作。

1
嗨,避免提供这样的答案。您可以使用注释代替。 - Pedro Alencar
1
目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
这并没有回答问题。一旦您拥有足够的声望,您就可以评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - SecretAgentMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接