Set default filename for fileDialog

Hi!
How set default filename for fileDialog, inherited from (Operator, ImportHelper)?
This code:

class OpenFileDialog(Operator, ImportHelper): 
    bl_idname = "test.open_filebrowser" 
    bl_label = "Open the file browser (yay)" 
    
    filter_glob: StringProperty( 
        default='*.json', 
        options={'HIDDEN'} ) 

    def execute(self, context): 
        """Do something with the selected file(s).""" 
        filename, extension = os.path.splitext(self.filepath) 
        print('Selected file:', self.filepath) 
        print('File name:', filename) 
        print('File extension:', extension) 
        print('Some Boolean:', self.some_boolean) 
  
        return {'FINISHED'}

There might be a slightly less hacky way but this should do it. Add this to your class methods :

def invoke(self, context, events):
    self.filename = "my_file_name.json"
    return super().invoke(context, events)

FYI this is where the helper class is defined https://github.com/blender/blender/blob/master/release/scripts/modules/bpy_extras/io_utils.py#L92-L105

It’s not work

That’s too bad, but if you want some more help you’ll have to post a little bit more of your code :slight_smile:

Heare more code:

class OpenFileDialog(Operator, ImportHelper): 
    bl_idname = "test.open_filebrowser" 
    bl_label = "Open the file browser (yay)" 
    
    filter_glob: StringProperty( 
        default='*.json', 
        options={'HIDDEN'} ) 

    some_boolean: BoolProperty( 
        name='Do a thing', 
        description='Do a thing with the file you\'ve selected', 
        default=True, ) 
        
    def execute(self, context): 
        """Do something with the selected file(s).""" 
        filename, extension = os.path.splitext(self.filepath) 
        print('Selected file:', self.filepath) 
        print('File name:', filename) 
        print('File extension:', extension) 
        print('Some Boolean:', self.some_boolean) 
        
        return {'FINISHED'}
    

def register():
    bpy.utils.register_class(OpenFileDialog)

def unregister():
    bpy.utils.unregister_class(OpenFileDialog)
    

if __name__ == "__main__":
    print("--------------------------------------------")
    
    register()

    bpy.ops.test.open_filebrowser('INVOKE_DEFAULT')

Try with this

import bpy
from bpy_extras.io_utils import ImportHelper

class OpenFileDialog(bpy.types.Operator, ImportHelper): 
    bl_idname = "test.open_filebrowser" 
    bl_label = "Open the file browser (yay)" 
    
    filter_glob: bpy.props.StringProperty( 
        default='*.json', 
        options={'HIDDEN'} ) 

    some_boolean: bpy.props.BoolProperty( 
        name='Do a thing', 
        description='Do a thing with the file you\'ve selected', 
        default=True, ) 

    def invoke(self, context, events):
        self.filepath = "test.json"
        return super().invoke(context, events)

    def execute(self, context): 
        """Do something with the selected file(s).""" 
        filename, extension = os.path.splitext(self.filepath) 
        print('Selected file:', self.filepath) 
        print('File name:', filename) 
        print('File extension:', extension) 
        print('Some Boolean:', self.some_boolean) 
        
        return {'FINISHED'}
    

def register():
    bpy.utils.register_class(OpenFileDialog)

def unregister():
    bpy.utils.unregister_class(OpenFileDialog)
    

if __name__ == "__main__":
    print("--------------------------------------------")
    
    register()

    bpy.ops.test.open_filebrowser('INVOKE_DEFAULT')
1 Like