You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CustomTkinter图像编辑器中仅显示PNG与JPEG格式文件?

解决文件对话框仅显示PNG和JPEG格式的问题

要限制文件浏览器只显示PNG和JPEG格式的文件,只需修改imageWidgets.py中的openDiag方法,给tkinter.filedialog.askopenfile添加filetypes参数即可。

修改后的关键代码片段

def openDiag(self):
    # 定义允许的文件类型
    file_types = [
        ("图像文件", "*.png *.jpg *.jpeg"),
        ("PNG文件", "*.png"),
        ("JPEG文件", "*.jpg *.jpeg")
    ]
    # 传递filetypes参数并处理用户取消选择的情况
    file = fd.askopenfile(filetypes=file_types)
    if file:
        path = file.name
        self.importFunc(path)

修改说明

  • filetypes参数接受列表格式,每个元素是元组:第一个值是显示在对话框下拉菜单的类型名称,第二个值是对应文件扩展名的通配符
  • 添加if file:判断,避免用户取消选择文件时触发AttributeError(取消操作时askopenfile返回None)

完整修改后的imageWidgets.py代码

import customtkinter as ctk 
from tkinter import filedialog as fd
from tkinter import Canvas
from settings import *

class ImageImport(ctk.CTkFrame):
  def __init__(self, parent, importFunc):
    super().__init__(master = parent)
    self.importFunc = importFunc
    
    # widget
    self.button = ctk.CTkButton(master = self, text = 'Open Image', command = self.openDiag)
    self.button.pack(expand = True)

  def openDiag(self):
    file_types = [
        ("图像文件", "*.png *.jpg *.jpeg"),
        ("PNG文件", "*.png"),
        ("JPEG文件", "*.jpg *.jpeg")
    ]
    file = fd.askopenfile(filetypes=file_types)
    if file:
        path = file.name
        self.importFunc(path)
    
class ImageOutput(ctk.CTkCanvas):
  def __init__(self, parent, resizeImage):
    super().__init__(
      master = parent, 
      background = BACKGROUND, 
      bd = 0, 
      highlightthickness = 0, 
      relief = 'ridge'
      )
    self.bind('<Configure>', resizeImage)
    self.grid(row = 0, column = 1, sticky = 'nsew')
    
class CloseOutput(ctk.CTkButton):
  def __init__(self, parent, command):
    super().__init__(
      master = parent, 
      text = 'X', 
      text_color = WHITE, 
      fg_color = 'transparent',
      width = 40, 
      height = 40, # make it as square
      corner_radius = 0, 
      hover_color = CLOSE_RED, 
      command = command
     )
    self.place(relx = 0.99, rely = 0.01, anchor = 'ne')

修改完成后,点击“Open Image”按钮打开的文件对话框将仅显示指定的PNG和JPEG格式文件,同时避免了用户取消选择时的程序异常。

内容的提问来源于stack exchange,提问作者GANESH312006

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:47:07