本文主要是介绍ttkbootstrap界面美化系列之Meter(六),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Meter是计量表控件,在大数据统计类的界面设计中使用较多,本文将介绍ttk中的Meter控件
一:Meter接口
print(help(ttk.Meter))
Help on class Meter in module ttkbootstrap.widgets:class Meter(tkinter.ttk.Frame)| Meter(master=None, bootstyle='default', arcrange=None, arcoffset=None, amounttotal=100, amountused=0, wedgesize=0, metersize=200, metertype='full', meterthickness=10, showtext=True, interactive=False, stripethickness=0, textleft=None, textright=None, textfont='-size 20 -weight bold', subtext=None, subtextstyle='default', subtextfont='-size 10', stepsize=1, **kwargs)|| A radial meter that can be used to show progress of long| running operations or the amount of work completed; can also be| used as a dial when set to `interactive=True`.|| This widget is very flexible. There are two primary meter types| which can be set with the `metertype` parameter: 'full' and| 'semi', which shows the arc of the meter in a full or| semi-circle. You can also customize the arc of the circle with| the `arcrange` and `arcoffset` parameters.|| The meter indicator can be displayed as a solid color or with| stripes using the `stripethickness` parameter. By default, the| `stripethickness` is 0, which results in a solid meter| indicator. A higher `stripethickness` results in larger wedges| around the arc of the meter.|| Various text and label options exist. The center text and| meter indicator is formatted with the `meterstyle` parameter.| You can set text on the left and right of this center label| using the `textleft` and `textright` parameters. This is most| commonly used for '$', '%', or other such symbols.|| If you need access to the variables that update the meter, you| you can access these via the `amountusedvar`, `amounttotalvar`,| and the `labelvar`. The value of these properties can also be| retrieved via the `configure` method.|| ![](../../assets/widgets/meter.gif)|| Examples:|| ```python| import ttkbootstrap as ttk| from ttkbootstrap.constants import *|| app = ttk.Window()|| meter = ttk.Meter(| metersize=180,| padding=5,| amountused=25,| metertype="semi",| subtext="miles per hour",| interactive=True,| )| meter.pack()|| # update the amount used directly| meter.configure(amountused = 50)|| # update the amount used with another widget| entry = ttk.Entry(textvariable=meter.amountusedvar)| entry.pack(fill=X)|| # increment the amount by 10 steps| meter.step(10)|| # decrement the amount by 15 steps| meter.step(-15)|| # update the subtext| meter.configure(subtext="loading...")|| app.mainloop()| ```|| Method resolution order:| Meter| tkinter.ttk.Frame| tkinter.ttk.Widget| tkinter.Widget| tkinter.BaseWidget| tkinter.Misc| tkinter.Pack| tkinter.Place| tkinter.Grid| builtins.object|| Methods defined here:|| __getitem__(self, key: str)| Return the resource value for a KEY given as string.|| __init__(self, master=None, bootstyle='default', arcrange=None, arcoffset=None, amounttotal=100, amountused=0, wedgesize=0, metersize=200, metertype='full', meterthickness=10, showtext=True, interactive=False, stripethickness=0, textleft=None, textright=None, textfont='-size 20 -weight bold', subtext=None, subtextstyle='default', subtextfont='-size 10', stepsize=1, **kwargs)| Parameters:|| master (Widget):| The parent widget.|| arcrange (int):| The range of the arc if degrees from start to end.|| arcoffset (int):| The amount to offset the arc's starting position in degrees.| 0 is at 3 o'clock.|| amounttotal (int):| The maximum value of the meter.|| amountused (int):| The current value of the meter; displayed in a center label| if the `showtext` property is set to True.|| wedgesize (int):| Sets the length of the indicator wedge around the arc. If| greater than 0, this wedge is set as an indicator centered| on the current meter value.|| metersize (int):| The meter is square. This represents the size of one side| if the square as measured in screen units.|| bootstyle (str):| Sets the indicator and center text color. One of primary,| secondary, success, info, warning, danger, light, dark.|| metertype ('full', 'semi'):| Displays the meter as a full circle or semi-circle.|| meterthickness (int):| The thickness of the indicator.|| showtext (bool):| Indicates whether to show the left, center, and right text| labels on the meter.|| interactive (bool):| Indicates that the user may adjust the meter value with| mouse interaction.|| stripethickness (int):| The indicator can be displayed as a solid band or as| striped wedges around the arc. If the value is greater than| 0, the indicator changes from a solid to striped, where the| value is the thickness of the stripes (or wedges).|| textleft (str):| A short string inserted to the left of the center text.|| textright (str):| A short string inserted to the right of the center text.|| textfont (Union[str, Font]):| The font used to render the center text.|| subtext (str):| Supplemental text that appears below the center text.|| subtextstyle (str):| The bootstyle color of the subtext. One of primary,| secondary, success, info, warning, danger, light, dark.| The default color is Theme specific and is a lighter| shade based on whether it is a 'light' or 'dark' theme.|| subtextfont (Union[str, Font]):| The font used to render the subtext.|| stepsize (int):| Sets the amount by which to change the meter indicator| when incremented by mouse interaction.|| **kwargs:| Other keyword arguments that are passed directly to the| `Frame` widget that contains the meter components.|| __setitem__(self, key: str, value) -> None|| configure(self, cnf=None, **kwargs)| Configure the options for this widget.|| Parameters:| cnf (Dict[str, Any], optional):| A dictionary of configuration options.|| **kwargs: Optional keyword arguments.|| step(self, delta=1)| Increase the indicator value by `delta`|| The indicator will reverse direction and count down once it| reaches the maximum value.|| Parameters:|| delta (int):| The amount to change the indicator.|| ----------------------------------------------------------------------| Methods inherited from tkinter.ttk.Frame:|| config = configure(self, cnf=None, **kwargs)|| ----------------------------------------------------------------------| Methods inherited from tkinter.ttk.Widget:|| identify(self, x, y)| Returns the name of the element at position x, y, or the empty| string if the point does not lie within any element.|| x and y are pixel coordinates relative to the widget.|| instate(self, statespec, callback=None, *args, **kw)| Test the widget's state.|| If callback is not specified, returns True if the widget state| matches statespec and False otherwise. If callback is specified,| then it will be invoked with *args, **kw if the widget state| matches statespec. statespec is expected to be a sequence.|| state(self, statespec=None)| Modify or inquire widget state.|| Widget state is returned if statespec is None, otherwise it is| set according to the statespec flags and then a new state spec| is returned indicating which flags were changed. statespec is| expected to be a sequence.|| ----------------------------------------------------------------------| Methods inherited from tkinter.BaseWidget:|| destroy(self)| Destroy this and all descendants widgets.|| ----------------------------------------------------------------------| Methods inherited from tkinter.Misc:|| __repr__(self)| Return repr(self).|| __str__(self)| Return the window path name of this widget.|| after(self, ms, func=None, *args)| Call function once after given time.|| MS specifies the time in milliseconds. FUNC gives the| function which shall be called. Additional parameters| are given as parameters to the function call. Return| identifier to cancel scheduling with after_cancel.|| after_cancel(self, id)| Cancel scheduling of function identified with ID.|| Identifier returned by after or after_idle must be| given as first parameter.|| after_idle(self, func, *args)| Call FUNC once if the Tcl main loop has no event to| process.|| Return an identifier to cancel the scheduling with| after_cancel.|| anchor = grid_anchor(self, anchor=None)|| bbox = grid_bbox(self, column=None, row=None, col2=None, row2=None)|| bell(self, displayof=0)| Ring a display's bell.|| bind(self, sequence=None, func=None, add=None)| Bind to this widget at event SEQUENCE a call to function FUNC.|| SEQUENCE is a string of concatenated event| patterns. An event pattern is of the form| <MODIFIER-MODIFIER-TYPE-DETAIL> where MODIFIER is one| of Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4,| Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3,| B3, Alt, Button4, B4, Double, Button5, B5 Triple,| Mod1, M1. TYPE is one of Activate, Enter, Map,| ButtonPress, Button, Expose, Motion, ButtonRelease| FocusIn, MouseWheel, Circulate, FocusOut, Property,| Colormap, Gravity Reparent, Configure, KeyPress, Key,| Unmap, Deactivate, KeyRelease Visibility, Destroy,| Leave and DETAIL is the button number for ButtonPress,| ButtonRelease and DETAIL is the Keysym for KeyPress and| KeyRelease. Examples are| <Control-Button-1> for pressing Control and mouse button 1 or| <Alt-A> for pressing A and the Alt key (KeyPress can be omitted).| An event pattern can also be a virtual event of the form| <<AString>> where AString can be arbitrary. This| event can be generated by event_generate.| If events are concatenated they must appear shortly| after each other.|| FUNC will be called if the event sequence occurs with an| instance of Event as argument. If the return value of FUNC is| "break" no further bound function is invoked.|| An additional boolean parameter ADD specifies whether FUNC will| be called additionally to the other bound function or whether| it will replace the previous function.|| Bind will return an identifier to allow deletion of the bound function with| unbind without memory leak.|| If FUNC or SEQUENCE is omitted the bound function or list| of bound events are returned.|| bind_all(self, sequence=None, func=None, add=None)| Bind to all widgets at an event SEQUENCE a call to function FUNC.| An additional boolean parameter ADD specifies whether FUNC will| be called additionally to the other bound function or whether| it will replace the previous function. See bind for the return value.|| bind_class(self, className, sequence=None, func=None, add=None)| Bind to widgets with bindtag CLASSNAME at event| SEQUENCE a call of function FUNC. An additional| boolean parameter ADD specifies whether FUNC will be| called additionally to the other bound function or| whether it will replace the previous function. See bind for| the return value.|| bindtags(self, tagList=None)| Set or get the list of bindtags for this widget.|| With no argument return the list of all bindtags associated with| this widget. With a list of strings as argument the bindtags are| set to this list. The bindtags determine in which order events are| processed (see bind).|| cget(self, key)| Return the resource value for a KEY given as string.|| clipboard_append(self, string, **kw)| Append STRING to the Tk clipboard.|| A widget specified at the optional displayof keyword| argument specifies the target display. The clipboard| can be retrieved with selection_get.|| clipboard_clear(self, **kw)| Clear the data in the Tk clipboard.|| A widget specified for the optional displayof keyword| argument specifies the target display.|| clipboard_get(self, **kw)| Retrieve data from the clipboard on window's display.|| The window keyword defaults to the root window of the Tkinter| application.|| The type keyword specifies the form in which the data is| to be returned and should be an atom name such as STRING| or FILE_NAME. Type defaults to STRING, except on X11, where the default| is to try UTF8_STRING and fall back to STRING.|| This command is equivalent to:|| selection_get(CLIPBOARD)|| columnconfigure = grid_columnconfigure(self, index, cnf={}, **kw)|| deletecommand(self, name)| Internal function.|| Delete the Tcl command provided in NAME.|| event_add(self, virtual, *sequences)| Bind a virtual event VIRTUAL (of the form <<Name>>)| to an event SEQUENCE such that the virtual event is triggered| whenever SEQUENCE occurs.|| event_delete(self, virtual, *sequences)| Unbind a virtual event VIRTUAL from SEQUENCE.|| event_generate(self, sequence, **kw)| Generate an event SEQUENCE. Additional| keyword arguments specify parameter of the event| (e.g. x, y, rootx, rooty).|| event_info(self, virtual=None)| Return a list of all virtual events or the information| about the SEQUENCE bound to the virtual event VIRTUAL.|| focus = focus_set(self)|| focus_displayof(self)| Return the widget which has currently the focus on the| display where this widget is located.|| Return None if the application does not have the focus.|| focus_force(self)| Direct input focus to this widget even if the| application does not have the focus. Use with| caution!|| focus_get(self)| Return the widget which has currently the focus in the| application.|| Use focus_displayof to allow working with several| displays. Return None if application does not have| the focus.|| focus_lastfor(self)| Return the widget which would have the focus if top level| for this widget gets the focus from the window manager.|| focus_set(self)| Direct input focus to this widget.|| If the application currently does not have the focus| this widget will get the focus if the application gets| the focus through the window manager.|| getboolean(self, s)| Return a boolean value for Tcl boolean values true and false given as parameter.|| getdouble(self, s)|| getint(self, s)|| getvar(self, name='PY_VAR')| Return value of Tcl variable NAME.|| grab_current(self)| Return widget which has currently the grab in this application| or None.|| grab_release(self)| Release grab for this widget if currently set.|| grab_set(self)| Set grab for this widget.|| A grab directs all events to this and descendant| widgets in the application.|| grab_set_global(self)| Set global grab for this widget.|| A global grab directs all events to this and| descendant widgets on the display. Use with caution -| other applications do not get events anymore.|| grab_status(self)| Return None, "local" or "global" if this widget has| no, a local or a global grab.|| grid_anchor(self, anchor=None)| The anchor value controls how to place the grid within the| master when no row/column has any weight.|| The default anchor is nw.|| grid_bbox(self, column=None, row=None, col2=None, row2=None)| Return a tuple of integer coordinates for the bounding| box of this widget controlled by the geometry manager grid.|| If COLUMN, ROW is given the bounding box applies from| the cell with row and column 0 to the specified| cell. If COL2 and ROW2 are given the bounding box| starts at that cell.|| The returned integers specify the offset of the upper left| corner in the master widget and the width and height.|| grid_columnconfigure(self, index, cnf={}, **kw)| Configure column INDEX of a grid.|| Valid resources are minsize (minimum size of the column),| weight (how much does additional space propagate to this column)| and pad (how much space to let additionally).|| grid_location(self, x, y)| Return a tuple of column and row which identify the cell| at which the pixel at position X and Y inside the master| widget is located.|| grid_propagate(self, flag=['_noarg_'])| Set or get the status for propagation of geometry information.|| A boolean argument specifies whether the geometry information| of the slaves will determine the size of this widget. If no argument| is given, the current setting will be returned.|| grid_rowconfigure(self, index, cnf={}, **kw)| Configure row INDEX of a grid.|| Valid resources are minsize (minimum size of the row),| weight (how much does additional space propagate to this row)| and pad (how much space to let additionally).|| grid_size(self)| Return a tuple of the number of column and rows in the grid.|| grid_slaves(self, row=None, column=None)| Return a list of all slaves of this widget| in its packing order.|| image_names(self)| Return a list of all existing image names.|| image_types(self)| Return a list of all available image types (e.g. photo bitmap).|| info_patchlevel(self)| Returns the exact version of the Tcl library.|| keys(self)| Return a list of all resource names of this widget.|| lift = tkraise(self, aboveThis=None)|| lower(self, belowThis=None)| Lower this widget in the stacking order.|| mainloop(self, n=0)| Call the mainloop of Tk.|| nametowidget(self, name)| Return the Tkinter instance of a widget identified by| its Tcl name NAME.|| option_add(self, pattern, value, priority=None)| Set a VALUE (second parameter) for an option| PATTERN (first parameter).|| An optional third parameter gives the numeric priority| (defaults to 80).|| option_clear(self)| Clear the option database.|| It will be reloaded if option_add is called.|| option_get(self, name, className)| Return the value for an option NAME for this widget| with CLASSNAME.|| Values with higher priority override lower values.|| option_readfile(self, fileName, priority=None)| Read file FILENAME into the option database.|| An optional second parameter gives the numeric| priority.|| pack_propagate(self, flag=['_noarg_'])| Set or get the status for propagation of geometry information.|| A boolean argument specifies whether the geometry information| of the slaves will determine the size of this widget. If no argument| is given the current setting will be returned.|| pack_slaves(self)| Return a list of all slaves of this widget| in its packing order.|| place_slaves(self)| Return a list of all slaves of this widget| in its packing order.|| propagate = pack_propagate(self, flag=['_noarg_'])|| quit(self)| Quit the Tcl interpreter. All widgets will be destroyed.|| register = _register(self, func, subst=None, needcleanup=1)|| rowconfigure = grid_rowconfigure(self, index, cnf={}, **kw)|| selection_clear(self, **kw)| Clear the current X selection.|| selection_get(self, **kw)| Return the contents of the current X selection.|| A keyword parameter selection specifies the name of| the selection and defaults to PRIMARY. A keyword| parameter displayof specifies a widget on the display| to use. A keyword parameter type specifies the form of data to be| fetched, defaulting to STRING except on X11, where UTF8_STRING is tried| before STRING.|| selection_handle(self, command, **kw)| Specify a function COMMAND to call if the X| selection owned by this widget is queried by another| application.|| This function must return the contents of the| selection. The function will be called with the| arguments OFFSET and LENGTH which allows the chunking| of very long selections. The following keyword| parameters can be provided:| selection - name of the selection (default PRIMARY),| type - type of the selection (e.g. STRING, FILE_NAME).|| selection_own(self, **kw)| Become owner of X selection.|| A keyword parameter selection specifies the name of| the selection (default PRIMARY).|| selection_own_get(self, **kw)| Return owner of X selection.|| The following keyword parameter can| be provided:| selection - name of the selection (default PRIMARY),| type - type of the selection (e.g. STRING, FILE_NAME).|| send(self, interp, cmd, *args)| Send Tcl command CMD to different interpreter INTERP to be executed.|| setvar(self, name='PY_VAR', value='1')| Set Tcl variable NAME to VALUE.|| size = grid_size(self)|| slaves = pack_slaves(self)|| tk_bisque(self)| Change the color scheme to light brown as used in Tk 3.6 and before.|| tk_focusFollowsMouse(self)| The widget under mouse will get automatically focus. Can not| be disabled easily.|| tk_focusNext(self)| Return the next widget in the focus order which follows| widget which has currently the focus.|| The focus order first goes to the next child, then to| the children of the child recursively and then to the| next sibling which is higher in the stacking order. A| widget is omitted if it has the takefocus resource set| to 0.|| tk_focusPrev(self)| Return previous widget in the focus order. See tk_focusNext for details.|| tk_setPalette(self, *args, **kw)| Set a new color scheme for all widget elements.|| A single color as argument will cause that all colors of Tk| widget elements are derived from this.| Alternatively several keyword parameters and its associated| colors can be given. The following keywords are valid:| activeBackground, foreground, selectColor,| activeForeground, highlightBackground, selectBackground,| background, highlightColor, selectForeground,| disabledForeground, insertBackground, troughColor.|| tk_strictMotif(self, boolean=None)| Set Tcl internal variable, whether the look and feel| should adhere to Motif.|| A parameter of 1 means adhere to Motif (e.g. no color| change if mouse passes over slider).| Returns the set value.|| tkraise(self, aboveThis=None)| Raise this widget in the stacking order.|| unbind(self, sequence, funcid=None)| Unbind for this widget the event SEQUENCE.|| If FUNCID is given, only unbind the function identified with FUNCID| and also delete the corresponding Tcl command.|| Otherwise destroy the current binding for SEQUENCE, leaving SEQUENCE| unbound.|| unbind_all(self, sequence)| Unbind for all widgets for event SEQUENCE all functions.|| unbind_class(self, className, sequence)| Unbind for all widgets with bindtag CLASSNAME for event SEQUENCE| all functions.|| update(self)| Enter event loop until all pending events have been processed by Tcl.|| update_idletasks(self)| Enter event loop until all idle callbacks have been called. This| will update the display of windows but not process events caused by| the user.|| wait_variable(self, name='PY_VAR')| Wait until the variable is modified.|| A parameter of type IntVar, StringVar, DoubleVar or| BooleanVar must be given.|| wait_visibility(self, window=None)| Wait until the visibility of a WIDGET changes| (e.g. it appears).|| If no parameter is given self is used.|| wait_window(self, window=None)| Wait until a WIDGET is destroyed.|| If no parameter is given self is used.|| waitvar = wait_variable(self, name='PY_VAR')|| winfo_atom(self, name, displayof=0)| Return integer which represents atom NAME.|| winfo_atomname(self, id, displayof=0)| Return name of atom with identifier ID.|| winfo_cells(self)| Return number of cells in the colormap for this widget.|| winfo_children(self)| Return a list of all widgets which are children of this widget.|| winfo_class(self)| Return window class name of this widget.|| winfo_colormapfull(self)| Return True if at the last color request the colormap was full.|| winfo_containing(self, rootX, rootY, displayof=0)| Return the widget which is at the root coordinates ROOTX, ROOTY.|| winfo_depth(self)| Return the number of bits per pixel.|| winfo_exists(self)| Return true if this widget exists.|| winfo_fpixels(self, number)| Return the number of pixels for the given distance NUMBER| (e.g. "3c") as float.|| winfo_geometry(self)| Return geometry string for this widget in the form "widthxheight+X+Y".|| winfo_height(self)| Return height of this widget.|| winfo_id(self)| Return identifier ID for this widget.|| winfo_interps(self, displayof=0)| Return the name of all Tcl interpreters for this display.|| winfo_ismapped(self)| Return true if this widget is mapped.|| winfo_manager(self)| Return the window manager name for this widget.|| winfo_name(self)| Return the name of this widget.|| winfo_parent(self)| Return the name of the parent of this widget.|| winfo_pathname(self, id, displayof=0)| Return the pathname of the widget given by ID.|| winfo_pixels(self, number)| Rounded integer value of winfo_fpixels.|| winfo_pointerx(self)| Return the x coordinate of the pointer on the root window.|| winfo_pointerxy(self)| Return a tuple of x and y coordinates of the pointer on the root window.|| winfo_pointery(self)| Return the y coordinate of the pointer on the root window.|| winfo_reqheight(self)| Return requested height of this widget.|| winfo_reqwidth(self)| Return requested width of this widget.|| winfo_rgb(self, color)| Return a tuple of integer RGB values in range(65536) for color in this widget.|| winfo_rootx(self)| Return x coordinate of upper left corner of this widget on the| root window.|| winfo_rooty(self)| Return y coordinate of upper left corner of this widget on the| root window.|| winfo_screen(self)| Return the screen name of this widget.|| winfo_screencells(self)| Return the number of the cells in the colormap of the screen| of this widget.|| winfo_screendepth(self)| Return the number of bits per pixel of the root window of the| screen of this widget.|| winfo_screenheight(self)| Return the number of pixels of the height of the screen of this widget| in pixel.|| winfo_screenmmheight(self)| Return the number of pixels of the height of the screen of| this widget in mm.|| winfo_screenmmwidth(self)| Return the number of pixels of the width of the screen of| this widget in mm.|| winfo_screenvisual(self)| Return one of the strings directcolor, grayscale, pseudocolor,| staticcolor, staticgray, or truecolor for the default| colormodel of this screen.|| winfo_screenwidth(self)| Return the number of pixels of the width of the screen of| this widget in pixel.|| winfo_server(self)| Return information of the X-Server of the screen of this widget in| the form "XmajorRminor vendor vendorVersion".|| winfo_toplevel(self)| Return the toplevel widget of this widget.|| winfo_viewable(self)| Return true if the widget and all its higher ancestors are mapped.|| winfo_visual(self)| Return one of the strings directcolor, grayscale, pseudocolor,| staticcolor, staticgray, or truecolor for the| colormodel of this widget.|| winfo_visualid(self)| Return the X identifier for the visual for this widget.|| winfo_visualsavailable(self, includeids=False)| Return a list of all visuals available for the screen| of this widget.|| Each item in the list consists of a visual name (see winfo_visual), a| depth and if includeids is true is given also the X identifier.|| winfo_vrootheight(self)| Return the height of the virtual root window associated with this| widget in pixels. If there is no virtual root window return the| height of the screen.|| winfo_vrootwidth(self)| Return the width of the virtual root window associated with this| widget in pixel. If there is no virtual root window return the| width of the screen.|| winfo_vrootx(self)| Return the x offset of the virtual root relative to the root| window of the screen of this widget.|| winfo_vrooty(self)| Return the y offset of the virtual root relative to the root| window of the screen of this widget.|| winfo_width(self)| Return the width of this widget.|| winfo_x(self)| Return the x coordinate of the upper left corner of this widget| in the parent.|| winfo_y(self)| Return the y coordinate of the upper left corner of this widget| in the parent.|| ----------------------------------------------------------------------| Data descriptors inherited from tkinter.Misc:|| __dict__| dictionary for instance variables|| __weakref__| list of weak references to the object|| ----------------------------------------------------------------------| Methods inherited from tkinter.Pack:|| forget = pack_forget(self)|| info = pack_info(self)|| pack = pack_configure(self, cnf={}, **kw)|| pack_configure(self, cnf={}, **kw)| Pack a widget in the parent widget. Use as options:| after=widget - pack it after you have packed widget| anchor=NSEW (or subset) - position widget according to| given direction| before=widget - pack it before you will pack widget| expand=bool - expand widget if parent size grows| fill=NONE or X or Y or BOTH - fill widget if widget grows| in=master - use master to contain this widget| in_=master - see 'in' option description| ipadx=amount - add internal padding in x direction| ipady=amount - add internal padding in y direction| padx=amount - add padding in x direction| pady=amount - add padding in y direction| side=TOP or BOTTOM or LEFT or RIGHT - where to add this widget.|| pack_forget(self)| Unmap this widget and do not use it for the packing order.|| pack_info(self)| Return information about the packing options| for this widget.|| ----------------------------------------------------------------------| Methods inherited from tkinter.Place:|| place = place_configure(self, cnf={}, **kw)|| place_configure(self, cnf={}, **kw)| Place a widget in the parent widget. Use as options:| in=master - master relative to which the widget is placed| in_=master - see 'in' option description| x=amount - locate anchor of this widget at position x of master| y=amount - locate anchor of this widget at position y of master| relx=amount - locate anchor of this widget between 0.0 and 1.0| relative to width of master (1.0 is right edge)| rely=amount - locate anchor of this widget between 0.0 and 1.0| relative to height of master (1.0 is bottom edge)| anchor=NSEW (or subset) - position anchor according to given direction| width=amount - width of this widget in pixel| height=amount - height of this widget in pixel| relwidth=amount - width of this widget between 0.0 and 1.0| relative to width of master (1.0 is the same width| as the master)| relheight=amount - height of this widget between 0.0 and 1.0| relative to height of master (1.0 is the same| height as the master)| bordermode="inside" or "outside" - whether to take border width of| master widget into account|| place_forget(self)| Unmap this widget.|| place_info(self)| Return information about the placing options| for this widget.|| ----------------------------------------------------------------------| Methods inherited from tkinter.Grid:|| grid = grid_configure(self, cnf={}, **kw)|| grid_configure(self, cnf={}, **kw)| Position a widget in the parent widget in a grid. Use as options:| column=number - use cell identified with given column (starting with 0)| columnspan=number - this widget will span several columns| in=master - use master to contain this widget| in_=master - see 'in' option description| ipadx=amount - add internal padding in x direction| ipady=amount - add internal padding in y direction| padx=amount - add padding in x direction| pady=amount - add padding in y direction| row=number - use cell identified with given row (starting with 0)| rowspan=number - this widget will span several rows| sticky=NSEW - if cell is larger on which sides will this| widget stick to the cell boundary|| grid_forget(self)| Unmap this widget.|| grid_info(self)| Return information about the options| for positioning this widget in a grid.|| grid_remove(self)| Unmap this widget but remember the grid options.|| location = grid_location(self, x, y)None
[Finished in 588ms]
通过dir来查看Meter支持的属性和方法
['_Misc__winfo_getint', '_Misc__winfo_parseitem', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_bind', '_configure', '_configure_get', '_configure_set', '_displayof', '_do', '_draw_base_image', '_draw_meter', '_draw_solid_meter', '_draw_striped_meter', '_getboolean', '_getconfigure', '_getconfigure1', '_getdoubles', '_getints', '_grid_configure', '_gridconvvalue', '_last_child_ids', '_lookup_style_option', '_meter_value', '_nametowidget', '_noarg_', '_on_dial_interact', '_on_theme_change', '_options', '_register', '_report_exception', '_root', '_set_arc_offset_range', '_set_interactive_bind', '_set_meter_text', '_set_show_text', '_set_subtext', '_set_text_center', '_set_text_left', '_set_text_right', '_set_widget_colors', '_setup', '_setup_widget', '_subst_format', '_subst_format_str', '_substitute', '_tclCommands', '_unbind', '_windowingsystem', 'after', 'after_cancel', 'after_idle', 'anchor', 'bbox', 'bell', 'bind', 'bind_all', 'bind_class', 'bindtags', 'cget', 'clipboard_append', 'clipboard_clear', 'clipboard_get', 'columnconfigure', 'config', 'configure', 'deletecommand', 'destroy', 'event_add', 'event_delete', 'event_generate', 'event_info', 'focus', 'focus_displayof', 'focus_force', 'focus_get', 'focus_lastfor', 'focus_set', 'forget', 'getboolean', 'getdouble', 'getint', 'getvar', 'grab_current', 'grab_release', 'grab_set', 'grab_set_global', 'grab_status', 'grid', 'grid_anchor', 'grid_bbox', 'grid_columnconfigure', 'grid_configure', 'grid_forget', 'grid_info', 'grid_location', 'grid_propagate', 'grid_remove', 'grid_rowconfigure', 'grid_size', 'grid_slaves', 'identify', 'image_names', 'image_types', 'info', 'info_patchlevel', 'instate', 'keys', 'lift', 'location', 'lower', 'mainloop', 'nametowidget', 'option_add', 'option_clear', 'option_get', 'option_readfile', 'pack', 'pack_configure', 'pack_forget', 'pack_info', 'pack_propagate', 'pack_slaves', 'place', 'place_configure', 'place_forget', 'place_info', 'place_slaves', 'propagate', 'quit', 'register', 'rowconfigure', 'selection_clear', 'selection_get', 'selection_handle', 'selection_own', 'selection_own_get', 'send', 'setvar', 'size', 'slaves', 'state', 'step', 'tk_bisque', 'tk_focusFollowsMouse', 'tk_focusNext', 'tk_focusPrev', 'tk_setPalette', 'tk_strictMotif', 'tkraise', 'unbind', 'unbind_all', 'unbind_class', 'update', 'update_idletasks', 'wait_variable', 'wait_visibility', 'wait_window', 'waitvar', 'winfo_atom', 'winfo_atomname', 'winfo_cells', 'winfo_children', 'winfo_class', 'winfo_colormapfull', 'winfo_containing', 'winfo_depth', 'winfo_exists', 'winfo_fpixels', 'winfo_geometry', 'winfo_height', 'winfo_id', 'winfo_interps', 'winfo_ismapped', 'winfo_manager', 'winfo_name', 'winfo_parent', 'winfo_pathname', 'winfo_pixels', 'winfo_pointerx', 'winfo_pointerxy', 'winfo_pointery', 'winfo_reqheight', 'winfo_reqwidth', 'winfo_rgb', 'winfo_rootx', 'winfo_rooty', 'winfo_screen', 'winfo_screencells', 'winfo_screendepth', 'winfo_screenheight', 'winfo_screenmmheight', 'winfo_screenmmwidth', 'winfo_screenvisual', 'winfo_screenwidth', 'winfo_server', 'winfo_toplevel', 'winfo_viewable', 'winfo_visual', 'winfo_visualid', 'winfo_visualsavailable', 'winfo_vrootheight', 'winfo_vrootwidth', 'winfo_vrootx', 'winfo_vrooty', 'winfo_width', 'winfo_x', 'winfo_y']
[Finished in 455ms]
二:Meter创建
首先我们通过官方的一个例子来看Meter如何创建的
import ttkbootstrap as ttk
from ttkbootstrap.constants import *app = ttk.Window()meter = ttk.Meter(metersize=180,padding=5,amountused=25,metertype="semi",subtext="miles per hour",interactive=True,
)
meter.pack()# update the amount used directly
meter.configure(amountused = 50)# update the amount used with another widget
entry = ttk.Entry(textvariable=meter.amountusedvar)
entry.pack(fill=X)# increment the amount by 10 steps
meter.step(10)# decrement the amount by 15 steps
meter.step(-15)# update the subtext
meter.configure(subtext="loading...")app.mainloop()
三:Meter选项
以下是Meter接口的选项
__init__(self, master=None, bootstyle='default', arcrange=None, arcoffset=None, amounttotal=100, amountused=0, wedgesize=0, metersize=200, metertype='full', meterthickness=10, showtext=True, interactive=False, stripethickness=0, textleft=None, textright=None, textfont='-size 20 -weight bold', subtext=None, subtextstyle='default', subtextfont='-size 10', stepsize=1, **kwargs)
与官方的文档现在已经有些出入了,里面的一些字段也变更了
选项 | 解释说明 |
master (Widget) | 父窗口 |
arcrange (int) | 从起点到终点的弧度范围。 |
arcoffset (int) | 偏移圆弧起始位置的量(以度为单位)。0位于3点钟方向。 |
amounttotal (int) | 仪表的最大值 |
amountused (int) | 仪表的当前值;如果“showtext”属性设置为True,则显示在中心标签中。 |
wedgesize (int) | 设置圆弧周围指示器楔块的长度。如果大于0,则此楔块将设置为以当前仪表值为中心的指示器。 |
metersize (int) | Meter控件的大小 |
bootstyle (str) | 设置Meter的样式,选项:primary,secondary, success, info, warning, danger, light, dark. |
metertype ('full', 'semi') | 将仪表显示为圆形或半圆。 |
meterthickness (int) | 指示器的厚度。 |
showtext (bool) | 指示是否在仪表上显示左侧、中间和右侧的文本标签。 |
interactive (bool) | 表示用户可以通过鼠标交互调整仪表值。 |
stripethickness (int) | 指示器可以显示为实心带,也可以显示为圆弧周围的条纹楔。如果该值大于0,指示器将从实心变为条纹,其中该值为条纹(或楔)的厚度。 |
textleft (str) | 插入到中心文本左侧的短字符串。 |
textright (str) | 插入到中心文本右侧的短字符串。 |
textfont (Union[str, Font]) | 用于呈现中心文本的字体。 |
subtext (str) | 显示在中心文本下方的补充文本。 |
subtextstyle (str) | 设置subtext文本样式 |
subtextfont (Union[str, Font]) | 设置subtext文本字体 |
stepsize (int) | 设置通过鼠标交互递增时更改仪表指示器的量。 |
下面再通过两个例子来展示如上选项的使用
from ttkbootstrap import Style
from ttkbootstrap.widgets import Meterstyle = Style('cosmo')
root = style.master
root.title('ttkbootstrap')print(help(Meter))m1 = Meter(metersize=180, padding=20, amountused=25, metertype='semi', subtext='miles per hour', interactive=True)
m1.grid(row=0, column=0)m2 = Meter(metersize=180, padding=20, amountused=1800, amounttotal=2600, subtext='storage used', textright='gb',bootstyle='info.TMeter', stripethickness=10, interactive=True)
m2.grid(row=0, column=1)m3 = Meter(metersize=180, padding=20, stripethickness=2, amountused=40, subtext='project capacity', textright='%',bootstyle='success.TMeter', interactive=True)
m3.grid(row=1, column=0)m4 = Meter(metersize=180, padding=20, amounttotal=280, arcrange=180, arcoffset=-180, amountused=75, textright='°',subtext='heat temperature', wedgesize=5, bootstyle='danger.TMeter', interactive=True)
m4.grid(row=1, column=1)root.mainloop()
下面一个利用Meter来动态展示获取网卡io统计信息,也可以理解为网速的例子
import psutil,time,threading
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
root = ttk.Window()
ttk.Meter(master=root,bootstyle=DEFAULT,metertype="full",#将仪表显示为一个完整的圆形或半圆形(semi)wedgesize=5, #设置弧周围的指示器楔形长度,如果大于 0,则此楔形设置为以当前仪表值为中心的指示器amounttotal=50, #仪表的最大值,默认100amountused=10, #仪表的当前值metersize=200,#仪表大小showtext=True, #指示是否在仪表上显示左、中、右文本标签interactive=True, #是否可以手动调节数字的大小textleft='左边', #插入到中心文本左侧的短字符串textright='右边',textfont="-size 30", #中间数字大小subtext="文本",subtextstyle=DEFAULT,subtextfont="-size 20",#文本大小).pack(side=ttk.LEFT, padx=5)
def _():meter = ttk.Meter(metersize=180,padding=50,amountused=0,metertype="semi",subtext="当前网速(kB/s)",subtextstyle="warning",interactive=False,bootstyle='primary',)meter.pack(side=ttk.LEFT, padx=5)while True:meter.configure(amountused=round(getNet(),2))
def getNet():recv_before = psutil.net_io_counters().bytes_recvtime.sleep(1)recv_now = psutil.net_io_counters().bytes_recvrecv = (recv_now - recv_before)/1024return recvt = threading.Thread(target=_)
t.setDaemon(True)
t.start()
root.mainloop()
这篇关于ttkbootstrap界面美化系列之Meter(六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!