If you prefer not to dive into Xcode or AppleScriptObjC, the scripting addition 24U Appearance OSAX 4.0 offers additional options, including for buttons, albeit not icon buttons. It offers radio buttons, pop-up menus, check boxes, validation text fields, unlimited buttons for dialogs, size and position window control, etc.
If you decide to download the OSAX, you can access script samples from the installer package's Appearance OSAX Extras/Examples folder. Option-click on an AppleScript app in the folder and choose "Show Package Contents". Navigate to Contents > Resources > Scripts > main.scpt. View with Quick Look by pressing the Spacebar key, or double-click to open in Script Editor. The apps themselves may not run, although the scripts do. Also make use of Script Editor's dictionary (Command-Shift-O) for use, syntax, and examples.
You can spice up your dialogs with image or ICNS files. Just provide a file path to the resource. A typical path is something like: ("Users:<username>:Pictures:MyImage.png" as alias). You can find System and Application icons to use on your computer. System icons can be found at /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/. Application icons can be found by Option-clicking on an app icon, choosing "Show Package Contents" and navigating to Contents > Resources. Copy the ICNS file to a location of your preference or provide a path to it. Here's a path example to a System icon:
with icon (path to resource "GenericApplicationIcon.icns" in bundle ((path to library folder from system domain as string) & "CoreServices:CoreTypes.bundle") as alias)
You'll need to size the image or ICNS appropriately to your design. If you find an icon too large for your needs, open it in Preview and use one of the PNG images that comprise an ICNS file and resize it. Image formats that support transparency (alpha channel), such as PNG or TIFF, work best although other formats are usable.
Example using images, pop-up menu, checkbox, and multiple buttons:
The code:
set dialogResult to display better dialog "Pick a fruit:" fields ¬
{{kind:popup menu, field menu items:{"cherry", "pear", "apple"}, field value:"cherry"}, ¬
{kind:check box, name:" with chocolate fondue", field value:checked state}} ¬
with icon ("Users:pd:Desktop:Fruit384x128.tiff" as alias) ¬
buttons {"Yum", "Fresh", "Sweet", "Bittersweet", "Bitter", "Rotten", "Yuck"} ¬
default button 1 title "Dessert"
set buttonReturned to button returned of dialogResult as text
try
do shell script "echo " & quoted form of (buttonReturned) & " | tr A-Z a-z"
set lowerString to the result
end try
set fruitChoice to field value of item 1 of fields returned of dialogResult
if fruitChoice is "cherry" then
set fruitIcon to ("Users:pd:Desktop:Cherry234x247.tiff" as alias)
else
if fruitChoice is "pear" then
set fruitIcon to ("Users:pd:Desktop:Pear216x247.tiff" as alias)
else
if fruitChoice is "apple" then
set fruitIcon to ("Users:pd:Desktop:Apple229x247.tiff" as alias)
end if
end if
end if
display better dialog "
You prefer " & choices returned of dialogResult & " and a slice of " & lowerString & ¬
"!" title "What You Prefer" with icon fruitIcon buttons {"OK"}
Another example using a GIF and radial buttons: