Python gui open file

tkinter filedialog

tkFileDialog is a module with open and save dialog functions. Instead of implementing those in Tkinter GUI on your own.

This page is a collection of python tkinter file dialogs. The code is displayed here along with screenshots. Dialogs included in tkinter let you ask for a filename or directory.

tkinter file dialogs are easy to use, but not that easy to find out how to use. The main problem is that there is no simple example of how to do it. This article tries to fill the gap.

Related course:

Tkinter Open File

The askopenfilename function to creates an file dialog object. The extensions are shown in the bottom of the form (Files of type).

tkinter.tk.askopenfilename is an extension of the askopenfilename function provided in Tcl/Tk.

The code below will simply show the dialog and return the filename. If a user presses cancel the filename is empty. On a Windows machine change the initialdir to “C:\”.

Python 2.7 version:

from Tkinter import *from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog

root = Tk()
root.filename = tkFileDialog.askopenfilename(initialdir = «/»,title = «Select file»,filetypes = ((«jpeg files»,«*.jpg»),(«all files»,«*.*»)))
print (root.filename)

Python 3 version:

from tkinter import filedialog
from tkinter import *

root = Tk()
root.filename = filedialog.askopenfilename(initialdir = «/»,title = «Select file»,filetypes = ((«jpeg files»,«*.jpg»),(«all files»,«*.*»)))
print (root.filename)

Here is an example (on Linux):

tkfiledialog Tkinter askopenfilename

tkfiledialog Tkinter askopenfilename

Tkinter Save File

The asksaveasfilename function prompts the user with a save file dialog.

Python 2.7 version

from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog

root = Tk()
root.filename = tkFileDialog.asksaveasfilename(initialdir = «/»,title = «Select file»,filetypes = ((«jpeg files»,«*.jpg»),(«all files»,«*.*»)))
print (root.filename)

Python 3 version

from tkinter import filedialog
from tkinter import *

root = Tk()
root.filename = filedialog.asksaveasfilename(initialdir = «/»,title = «Select file»,filetypes = ((«jpeg files»,«*.jpg»),(«all files»,«*.*»)))
print (root.filename)

Tkinter Open Directory

Consider a scenario where your program needs to get a directory, the user clicked on the ok button and now you want to determine the path.

The askdirectory presents the user with a popup for directory selection.

Python 2.7 version

from Tkinter import *
import Tkinter, Tkconstants, tkFileDialog
root = Tk()
root.directory = tkFileDialog.askdirectory()
print (root.directory)

tkinter-askdirectory

If you are new to programming Tkinter, I highly recommend this course.

Источник

Python gui open file

Tkinter обладает рядом встроенных диалоговых окон для различных задач. Рассмотрим некоторые из них.

filedialog

Модуль filedialog предоставляет функциональность файловых диалоговых окон, которые позволяют выбрать файл или каталог для различных задач. В частности в модуле для работы с файлами определены следующие функции:

  • askopenfilename() : открывает диалоговое окно для выбора файла и возвращает путь к выбранному файлу. Если файл не выбран, возвращается пустая строка «»
  • askopenfilenames() : открывает диалоговое окно для выбора файлов и возвращает список путей к выбранным файлам. Если файл не выбран, возвращается пустая строка «»
  • asksaveasfilename() : открывает диалоговое окно для сохранения файла и возвращает путь к сохраненному файлу. Если файл не выбран, возвращается пустая строка «»
  • asksaveasfile() : открывает диалоговое окно для сохранения файла и возвращает сохраненный файл. Если файл не выбран, возвращается None
  • askdirectory() : открывает диалоговое окно для выбора каталога и возвращает путь к выбранному каталогу. Если файл не выбран, возвращается пустая строка «»
  • askopenfile() : открывает диалоговое окно для выбора файла и возвращает выбранный файл. Если файл не выбран, возвращается None
  • askopenfiles() : открывает диалоговое окно для выбора файлов и возвращает список выбранных файлов

Рассмотрим открытие и сохранение файла на примере:

from tkinter import * from tkinter import ttk from tkinter import filedialog root = Tk() root.title("METANIT.COM") root.geometry("250x200") root.grid_rowconfigure(index=0, weight=1) root.grid_columnconfigure(index=0, weight=1) root.grid_columnconfigure(index=1, weight=1) text_editor = Text() text_editor.grid(column=0, columnspan=2, row=0) # открываем файл в текстовое поле def open_file(): filepath = filedialog.askopenfilename() if filepath != "": with open(filepath, "r") as file: text =file.read() text_editor.delete("1.0", END) text_editor.insert("1.0", text) # сохраняем текст из текстового поля в файл def save_file(): filepath = filedialog.asksaveasfilename() if filepath != "": text = text_editor.get("1.0", END) with open(filepath, "w") as file: file.write(text) open_button = ttk.Button(text="Открыть файл", command=open_file) open_button.grid(column=0, row=1, sticky=NSEW, padx=10) save_button = ttk.Button(text="Сохранить файл", command=save_file) save_button.grid(column=1, row=1, sticky=NSEW, padx=10) root.mainloop()

Открытие и сохранение файлов в Tkinter и Python

Здесь определены две кнопки. По нажатию по на кнопку open_button вызывается функция filedialog.askopenfilename() . Она возвращает путь к выбранному файлу. И если в диалоговом окне не нажата кнопка отмены (то есть путь к файлу не равен пустой строке), то считываем содержимое текстового файла и добавляем его в виджет Text

def open_file(): filepath = filedialog.askopenfilename() if filepath != "": with open(filepath, "r") as file: text =file.read() text_editor.delete("1.0", END) text_editor.insert("1.0", text)

По нажатию на кнопку save_button срабатывает функция filedialog.asksaveasfilename() , которая возвращает путь к файлу для сохранения текста из виджета Text. И если файл выбран, то открываем его и сохраняем в него текст:

def save_file(): filepath = filedialog.asksaveasfilename() if filepath != "": text = text_editor.get("1.0", END) with open(filepath, "w") as file: file.write(text)

Эти функции могут принимать ряд параметров:

  • confirmoverwrite : нужно ли подтверждение для перезаписи файла (для диалогового окна сохранения файла)
  • defaultextension : расширение по умолчанию
  • filetypes : шаблоны типов файлов
  • initialdir : стартовый каталог, который открывается в окне
  • initialfile : файл по умолчанию
  • title : заголовок диалогового окна
  • typevariable : переменная, к которой привязан выбранный файл
filedialog.askopenfiles(title="Выбор файла", initialdir="D://tkinter", defaultextension="txt", initialfile="hello.txt")

Выбор шрифта

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello World") label.pack(anchor=NW, padx=10, pady=10) def font_changed(font): label["font"] = font def select_font(): root.tk.call("tk", "fontchooser", "configure", "-font", label["font"], "-command", root.register(font_changed)) root.tk.call("tk", "fontchooser", "show") open_button = ttk.Button(text="Выбрать шрифт", command=select_font) open_button.pack(anchor=NW, padx=10, pady=10) root.mainloop()

По нажатию на кнопку вызывается функция select_font, в которой вначале производится настройка диалогового окна установки шрифта

root.tk.call("tk", "fontchooser", "configure", "-font", label["font"], "-command", root.register(font_changed))

В частности, значение «configure» указывает, что в данном случае производится настройка диалогового окна. Аргумент «-font» указывает, что следующее значение представляет настройка шрифта, который будет выбран в диалоговом окне по умолчанию. В качестве такового здесь используется шрифт метки label.

Аргумент «-command» указывает, что дальше идет определение функции, которая будет срабатывать при выборе шрифта. Здесь такой функцией является функция font_changed . Функция выбора шрифта должна принимать один параметр — через него будет передаваться выбранный шрифт. В данном случае просто переустанавливаем шрифт метки.

Для отображения окна выбора шрифта выполняется вызов

root.tk.call("tk", "fontchooser", "show")

Таким образом, при нажатии на кнопку откроется окно выбора шрифта, а после его выбора он будет применен к метке:

выбор шрифта в Tkinter и Python

Выбор цвета

Для выбора цвета применяется функции из модуля colorchooser.askcolor() :

from tkinter import * from tkinter import ttk from tkinter import colorchooser root = Tk() root.title("METANIT.COM") root.geometry("250x200") label = ttk.Label(text="Hello World") label.pack(anchor=NW, padx=10, pady=10) def select_color(): result = colorchooser.askcolor(initialcolor="black") label["foreground"] = result[1] open_button = ttk.Button(text="Выбрать цвет", command=select_color) open_button.pack(anchor=NW, padx=10, pady=10) root.mainloop()

Здесь по нажатию на кнопку вызывается функция select_color. В этой функции вызывается функция colorchooser.askcolor . С помощью параметра initialcolor устанавливаем цвет, который выбран по умолчанию в диалоговом окне. В данном случае это черный цвет («black»)

Результатом функции является кортеж с определениями выбранного цвета. Например, для красного цвета кортеж будет выглядеть следующим образом: ((255, 0, 0), «#ff0000») . То есть, обратившись к второму элементу кортежа, можно получить шестнадцатиричное значение цвета. Здесь выбранный цвет применяется для установки цвета шрифта метки:

Источник

Python gui open file

Open File Dialog in Tkinter Python provides a vast number of libraries for GUI application development. Tkinter is the widely used library for GUI application development. Using the Tkinter library of python which carries large numbers of widgets, we can easily create a Graphical User Interface for our application.

Open File Dialog: Like other programming languages, Tkinter library of Python also provides functionality to perform the operation of open file, save file or directories. In this guide we are going to talk about open file dialog which is used when we have to open file or directories.

tkinter tutorial

In other programming languages like Java, php etc. we have to write full code for implementing open file dialog operation. But in Tkinter, this functionality is already defined.

Let’s see one example to understand this concept better

from tkinter import * from tkinter import filedialog #setting up parent window root = Tk() #function definition for opening file dialog def openf(): file = filedialog.askopenfilename(initialdir='/', title="select file") file_open = Button(root, text="Open file", command= openf) file_open.pack(pady=20) root.geometry("350x200") root.title("PythonLobby.com") root.mainloop()

Program explanation in detail:

  • First, we have imported all the required libraries and modules of Tkinter using import *.
  • Then we have initialized root as an object for Tk() class for creating a root window.
  • Next we defined the opendf() function which we will call on button click later.
  • In function definition we used filedialog library along with askopenfilename function.
  • Here in function two parameter is passed i.e. initialdir=’\’ it means root directory where our current project file available and title will display at the top of application.
  • Next we created one button. On button click the above function will be called and the function will perform the required operation.
  • Rest below given code is for configuring our application layout i.e. width, height and title.

Example 2: In this example, we will use text editor with open file dialog. We will open a text file and try to insert its content into our text editor.

from tkinter import * from tkinter import filedialog #setting up parent window root = Tk() #function definition for opening file dialog def openf(): file = filedialog.askopenfilename(initialdir='/', title="select file", filetypes=(("Txt Files",".txt"), ("All Files","*.*"))) #inserting data to text editor content =open(file) data = content.read() teditor.insert(END, data) #creating text editor teditor = Text(root, width=40, height=8) teditor.pack(pady=10) file_open = Button(root, text="Open file", command= openf) file_open.pack() root.geometry("350x200") root.title("PythonLobby.com") root.mainloop()

Program explanation in detail:

  • First, we have imported all the required libraries and modules of Tkinter using import *.
  • Then we have initialized root as an object for Tk() class for creating a root window.
  • Next we defined the opendf() function which we will call on button click later.
  • In function definition we used filedialog library along with askopenfilename function.
  • Here in function two parameter is passed i.e. initialdir=’\’ it means root directory where our current project file available and title will display at the top of application.
  • Next we created one button. On button click the above function will be called and the function will perform the required operation.
  • Additionally in this program we implemented the concept of file handling as well for opening file and reading the file.
  • Rest below given code is for configuring our application layout i.e. width, height and title.

Источник

Читайте также:  Php скрипт создает пустые файлы
Оцените статью