ttkbootstrap界面美化系列之Meter(六)

2024-05-05 12:20

本文主要是介绍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(六)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961711

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

GPT系列之:GPT-1,GPT-2,GPT-3详细解读

一、GPT1 论文:Improving Language Understanding by Generative Pre-Training 链接:https://cdn.openai.com/research-covers/languageunsupervised/language_understanding_paper.pdf 启发点:生成loss和微调loss同时作用,让下游任务来适应预训

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

Java基础回顾系列-第三天-Lambda表达式

Java基础回顾系列-第三天-Lambda表达式 Lambda表达式方法引用引用静态方法引用实例化对象的方法引用特定类型的方法引用构造方法 内建函数式接口Function基础接口DoubleToIntFunction 类型转换接口Consumer消费型函数式接口Supplier供给型函数式接口Predicate断言型函数式接口 Stream API 该篇博文需重点了解:内建函数式

Java基础回顾系列-第二天-面向对象编程

面向对象编程 Java类核心开发结构面向对象封装继承多态 抽象类abstract接口interface抽象类与接口的区别深入分析类与对象内存分析 继承extends重写(Override)与重载(Overload)重写(Override)重载(Overload)重写与重载之间的区别总结 this关键字static关键字static变量static方法static代码块 代码块String类特