2010-08-26 40 views
75

Tôi muốn nhận đường dẫn tệp dưới dạng đầu vào trong ứng dụng bảng điều khiển Python của mình.Chọn một tệp bằng Python với Hộp thoại đơn giản

Hiện tại tôi chỉ có thể yêu cầu đường dẫn đầy đủ làm đầu vào trong bảng điều khiển.

Có cách nào để kích hoạt giao diện người dùng đơn giản nơi người dùng có thể chọn tệp thay vì nhập đường dẫn đầy đủ không?

+1

Câu hỏi này sẽ mời các câu trả lời đề xuất thư viện python đơn giản, đa nền tảng. Không phải là một câu hỏi hay. Sẽ có rất nhiều câu trả lời khác nhau và vân vân. – leonneo

+0

Tôi thấy lý do tại sao câu hỏi này bị đóng, nhưng đối với tôi đó là câu hỏi nhanh nhất để cung cấp một ví dụ rõ ràng và đơn giản về cách có được hộp thoại mở với Tkinter (lần đầu tiên truy cập vào google). Có lẽ nó sẽ có giá trị để cải cách nó để nó có thể được mở cửa trở lại? – luator

+1

@luator, đã chỉnh sửa câu hỏi để tuân thủ các quy tắc từ trung tâm trợ giúp. –

Trả lời

138

Làm thế nào để sử dụng Tkinter?

from Tkinter import Tk 
from tkFileDialog import askopenfilename 

Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing 
filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file 
print(filename) 

Xong!

+2

cảm ơn bạn rất nhiều –

+0

Tôi đã nhận TypeError: đối tượng 'module' không thể gọi trên Tk() .draw() - bất kỳ ý tưởng nào? – user391339

+1

Tôi phải làm root = Tk.Tk() rồi root.withdraw(). Bây giờ cửa sổ hộp thoại mở tập tin không đóng cửa. – user391339

4

Sử dụng mô-đun tkFileDialog là một phần của cài đặt chuẩn.

import tkFileDialog 

print tkFileDialog.askopenfilename() 
10

Với EasyGui (tài liệu được tạo ra bởi pydocepydoc cho phiên bản 0,96):

import easygui 
print easygui.fileopenbox() 

Để cài đặt:

pip install http://easygui.sourceforge.net/download/version0.96/easygui_v0.96.zip 

Demo:

import easygui 
easygui.egdemo() 
+0

Đây là giải pháp tốt nhất cho đến nay. Lý do chính là easygui là một gói pip và dễ cài đặt –

52

Python phiên bản 3.x của Câu trả lời của Etaoin về sự hoàn chỉnh:

from tkinter.filedialog import askopenfilename 
filename = askopenfilename() 
+5

Đối với tổng số song song, có lẽ cũng nên có 'nhập tkinter' +' tkinter.Tk() .draw() '. – imallett

2

Một tùy chọn khác để xem xét là Thiền: http://freecode.com/projects/zenity.

Tôi có một tình huống mà tôi đang phát triển ứng dụng máy chủ Python (không có thành phần GUI) và do đó không muốn giới thiệu phụ thuộc vào bất kỳ bộ công cụ GUI python nào, nhưng tôi muốn một số script gỡ lỗi của mình được tham số hóa tệp và muốn trực quan nhắc người dùng cho một tệp nếu họ không chỉ định một tệp trên dòng lệnh. Thiền là một sự phù hợp hoàn hảo. Để đạt được điều này, hãy gọi "zenity --file-selection" bằng cách sử dụng mô đun subprocess và capture stdout. Tất nhiên, giải pháp này không phải là Python cụ thể.

Zenity hỗ trợ nhiều nền tảng và đã xảy ra đã được cài đặt trên máy chủ dev của chúng tôi để nó tạo điều kiện cho việc gỡ lỗi/phát triển của chúng tôi mà không đưa ra sự phụ thuộc không mong muốn.

Các vấn đề liên quan