如何在tkinter.ttk.Button中添加箭头并控制其尺寸?
Great questions! Let’s break this down step by step with practical examples.
1. Activating Arrow Styles Like TButton.leftarrow
The arrow-specific styles (e.g., TButton.leftarrow, TButton.rightarrow) are designed to work with the button’s arrow configuration, or can be explicitly assigned. Here are the two simplest ways to use them:
Method 1: Use the arrow Parameter
When creating your ttk.Button, set the arrow argument to 'left', 'right', 'up', or 'down'. This automatically applies the corresponding arrow style to the button, which includes the arrow element in its layout:
import tkinter as tk from tkinter import ttk root = tk.Tk() # Button with left arrow (uses TButton.leftarrow style) left_btn = ttk.Button(root, arrow='left') left_btn.pack(padx=10, pady=10) # Button with up arrow (uses TButton.uparrow style) up_btn = ttk.Button(root, arrow='up') up_btn.pack(padx=10, pady=10) root.mainloop()
Method 2: Explicitly Assign the Style
You can also directly set the button’s style parameter to one of the arrow styles, even without specifying the arrow argument:
right_btn = ttk.Button(root, style='TButton.rightarrow') right_btn.pack(padx=10, pady=10)
Why You Might Not See the Arrow in TButton Layout
The base TButton style doesn’t include the arrow element—only the arrow-specific variants do. To confirm this, print the layout of TButton.leftarrow:
style = ttk.Style() print(style.layout('TButton.leftarrow'))
You’ll see the Arrow element listed in the output, which is missing from the base TButton layout.
2. Controlling Arrow Size with the arrowsize Option
The arrowsize is a style configuration option, not a widget option—so you can’t set it directly on the button itself. Instead, you adjust it via the style associated with the arrow button. Here’s how:
Adjust the Built-in Arrow Style
Modify the existing arrow style to change its arrow size for all buttons using that style:
style = ttk.Style() # Set arrowsize to 25 pixels for all left-arrow buttons style.configure('TButton.leftarrow', arrowsize=25)
Create a Custom Style for Specific Buttons
If you don’t want to alter the built-in style, create a custom style that inherits from the arrow style, then set its arrowsize:
style = ttk.Style() # Create a custom style with a large arrow style.configure('LargeRightArrow.TButton', arrowsize=35) # Use this custom style for a button large_right_btn = ttk.Button(root, arrow='right', style='LargeRightArrow.TButton') large_right_btn.pack(padx=10, pady=10)
Key Notes About arrowsize
- The value is in pixels, and defines the square dimensions of the arrow (e.g.,
arrowsize=20gives a 20x20 pixel arrow). - This option works for all arrow directions (
leftarrow,rightarrow,uparrow,downarrow)—just configure the corresponding style.
内容的提问来源于stack exchange,提问作者Sun Bear

