是否可以在 Tkinter 中获取小部件设置?

发布于 2024-09-09 03:17:36 字数 273 浏览 4 评论 0原文

如果我能得到像下面这样的东西那就太棒了。

伪代码:

U = widget1.SettingsGet()
Print U 

在打印 U 时,将返回类似这样的内容:

widget1(background='green',foreground='grey',boarderwidth=10, relief='flat')

能够获取小部件设置将非常有用。这样我就可以相应地操作其他小部件。

It'd be awesome if I could get something like the below.

Pseudo Code:

U = widget1.SettingsGet()
Print U 

Upon printing U something like this would be returned:

widget1(background='green',foreground='grey',boarderwidth=10, relief='flat')

It would be really useful to be able to get a widgets settings. So that I can manipulate other widgets accordingly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

调妓 2024-09-16 03:17:36

如果你知道你需要什么设置,你可以使用cget方法来获取值,例如

from Tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")
w.pack()
print w.cget('text')
root.mainloop()

它将打印

Hello, world!

如果你想知道所有可用的选项,widget.config包含配置,如果你希望您可以创建您可能需要的全部或部分设置,例如

import pprint
from Tkinter import *

root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
pprint.pprint(w.config())
root.mainloop()

输出:

{'activebackground': ('activebackground',
                      'activeBackground',
                      'Foreground',
                      <border object at 00C665D0>,
                      'SystemButtonFace'),
 'activeforeground': ('activeforeground',
                      'activeForeground',
                      'Background',
                      <color object at 00C66C48>,
                      'SystemButtonText'),
 'anchor': ('anchor',
            'anchor',
            'Anchor',
            <index object at 00C66588>,
            'center'),
 'background': ('background',
                'background',
                'Background',
                <border object at 0119A3E0>,
                'SystemButtonFace'),
 'bd': ('bd', '-borderwidth'),
 'bg': ('bg', '-background'),
 'bitmap': ('bitmap', 'bitmap', 'Bitmap', '', ''),
 'borderwidth': ('borderwidth',
                 'borderWidth',
                 'BorderWidth',
                 <pixel object at 0119A0F8>,
                 <pixel object at 0119A0F8>),
 'compound': ('compound',
              'compound',
              'Compound',
              <index object at 011A90D8>,
              'none'),
 'cursor': ('cursor', 'cursor', 'Cursor', '', ''),
 'disabledforeground': ('disabledforeground',
                        'disabledForeground',
                        'DisabledForeground',
                        <color object at 011A5DB0>,
                        'SystemDisabledText'),
 'fg': ('fg', '-foreground'),
 'font': ('font',
          'font',
          'Font',
          <font object at 011A5E40>,
          (('MS', 'Sans', 'Serif'), '8')),
 'foreground': ('foreground',
                'foreground',
                'Foreground',
                <color object at 011A5F48>,
                'SystemButtonText'),
 'height': ('height', 'height', 'Height', 0, 0),
 'highlightbackground': ('highlightbackground',
                         'highlightBackground',
                         'HighlightBackground',
                         <border object at 011A5EE8>,
                         'SystemButtonFace'),
 'highlightcolor': ('highlightcolor',
                    'highlightColor',
                    'HighlightColor',
                    <color object at 011A5F78>,
                    'SystemWindowFrame'),
 'highlightthickness': ('highlightthickness',
                        'highlightThickness',
                        'HighlightThickness',
                        <pixel object at 011A5FA8>,
                        <pixel object at 011A5FA8>),
 'image': ('image', 'image', 'Image', '', ''),
 'justify': ('justify',
             'justify',
             'Justify',
             <index object at 011A5F30>,
             'center'),
 'padx': ('padx',
          'padX',
          'Pad',
          <pixel object at 011A5FC0>,
          <pixel object at 011A5FC0>),
 'pady': ('pady',
          'padY',
          'Pad',
          <pixel object at 011A5FD8>,
          <pixel object at 011A5FD8>),
 'relief': ('relief', 'relief', 'Relief', <index object at 011A5FF0>, 'flat'),
 'state': ('state', 'state', 'State', <index object at 011A5EA0>, 'normal'),
 'takefocus': ('takefocus', 'takeFocus', 'TakeFocus', '0', '0'),
 'text': ('text', 'text', 'Text', '', ('Hello,', 'world!')),
 'textvariable': ('textvariable', 'textVariable', 'Variable', '', ''),
 'underline': ('underline', 'underline', 'Underline', -1, -1),
 'width': ('width', 'width', 'Width', 0, 0),
 'wraplength': ('wraplength',
                'wrapLength',
                'WrapLength',
                <pixel object at 00C50908>,
                <pixel object at 00C50908>)}

If you know what settings you need, you can just use the cget method to get values e.g.

from Tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")
w.pack()
print w.cget('text')
root.mainloop()

It will print

Hello, world!

If you want to know all the available options, widget.config contains the config and from that if you wish you can create all or a subset of settings which you may need e.g.

import pprint
from Tkinter import *

root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
pprint.pprint(w.config())
root.mainloop()

Output:

{'activebackground': ('activebackground',
                      'activeBackground',
                      'Foreground',
                      <border object at 00C665D0>,
                      'SystemButtonFace'),
 'activeforeground': ('activeforeground',
                      'activeForeground',
                      'Background',
                      <color object at 00C66C48>,
                      'SystemButtonText'),
 'anchor': ('anchor',
            'anchor',
            'Anchor',
            <index object at 00C66588>,
            'center'),
 'background': ('background',
                'background',
                'Background',
                <border object at 0119A3E0>,
                'SystemButtonFace'),
 'bd': ('bd', '-borderwidth'),
 'bg': ('bg', '-background'),
 'bitmap': ('bitmap', 'bitmap', 'Bitmap', '', ''),
 'borderwidth': ('borderwidth',
                 'borderWidth',
                 'BorderWidth',
                 <pixel object at 0119A0F8>,
                 <pixel object at 0119A0F8>),
 'compound': ('compound',
              'compound',
              'Compound',
              <index object at 011A90D8>,
              'none'),
 'cursor': ('cursor', 'cursor', 'Cursor', '', ''),
 'disabledforeground': ('disabledforeground',
                        'disabledForeground',
                        'DisabledForeground',
                        <color object at 011A5DB0>,
                        'SystemDisabledText'),
 'fg': ('fg', '-foreground'),
 'font': ('font',
          'font',
          'Font',
          <font object at 011A5E40>,
          (('MS', 'Sans', 'Serif'), '8')),
 'foreground': ('foreground',
                'foreground',
                'Foreground',
                <color object at 011A5F48>,
                'SystemButtonText'),
 'height': ('height', 'height', 'Height', 0, 0),
 'highlightbackground': ('highlightbackground',
                         'highlightBackground',
                         'HighlightBackground',
                         <border object at 011A5EE8>,
                         'SystemButtonFace'),
 'highlightcolor': ('highlightcolor',
                    'highlightColor',
                    'HighlightColor',
                    <color object at 011A5F78>,
                    'SystemWindowFrame'),
 'highlightthickness': ('highlightthickness',
                        'highlightThickness',
                        'HighlightThickness',
                        <pixel object at 011A5FA8>,
                        <pixel object at 011A5FA8>),
 'image': ('image', 'image', 'Image', '', ''),
 'justify': ('justify',
             'justify',
             'Justify',
             <index object at 011A5F30>,
             'center'),
 'padx': ('padx',
          'padX',
          'Pad',
          <pixel object at 011A5FC0>,
          <pixel object at 011A5FC0>),
 'pady': ('pady',
          'padY',
          'Pad',
          <pixel object at 011A5FD8>,
          <pixel object at 011A5FD8>),
 'relief': ('relief', 'relief', 'Relief', <index object at 011A5FF0>, 'flat'),
 'state': ('state', 'state', 'State', <index object at 011A5EA0>, 'normal'),
 'takefocus': ('takefocus', 'takeFocus', 'TakeFocus', '0', '0'),
 'text': ('text', 'text', 'Text', '', ('Hello,', 'world!')),
 'textvariable': ('textvariable', 'textVariable', 'Variable', '', ''),
 'underline': ('underline', 'underline', 'Underline', -1, -1),
 'width': ('width', 'width', 'Width', 0, 0),
 'wraplength': ('wraplength',
                'wrapLength',
                'WrapLength',
                <pixel object at 00C50908>,
                <pixel object at 00C50908>)}
却一份温柔 2024-09-16 03:17:36

要从 cget 获取小部件的所有属性,可以使用keys() 获取属性,然后使用cget 获取这些属性的值。 IE:

    from tkinter import *
    root=Tk()
    w=Button(root)
    for item in w.keys():
        print(item)
        print(w.cget(item))

此代码返回:

    activebackground
    systemButtonFacePressed
    activeforeground
    systemPushButtonPressedText
    anchor
    center
    background
    White
    bd
    2
    bg
    White
    bitmap

    borderwidth
    2
    command

    compound
    none
    cursor

    default
    disabled
    disabledforeground
    #a3a3a3
    fg
    systemButtonText
    font
    TkDefaultFont
    foreground
    systemButtonText
    height
    0
    highlightbackground
    White
    highlightcolor
    systemButtonFrame
    highlightthickness
    4
    image

    justify
    center
    overrelief

    padx
    12
    pady
    3
    relief
    flat
    repeatdelay
    0
    repeatinterval
    0
    state
    normal
    takefocus

    text

    textvariable

    underline
    -1
    width
    0
    wraplength
    0

那是很多空格>。<

在此块中,第一个是键,第二个是所述键的值。键方法(对于所有小部件)返回所述小部件中的所有键。 Config 返回键及其适用范围(光标与光标),其中键仅给出所有属性的列表。

To get all attributes of a widget from cget, you can use keys() to get the attributes and then cget to get the value of those atributes. IE:

    from tkinter import *
    root=Tk()
    w=Button(root)
    for item in w.keys():
        print(item)
        print(w.cget(item))

This code returns:

    activebackground
    systemButtonFacePressed
    activeforeground
    systemPushButtonPressedText
    anchor
    center
    background
    White
    bd
    2
    bg
    White
    bitmap

    borderwidth
    2
    command

    compound
    none
    cursor

    default
    disabled
    disabledforeground
    #a3a3a3
    fg
    systemButtonText
    font
    TkDefaultFont
    foreground
    systemButtonText
    height
    0
    highlightbackground
    White
    highlightcolor
    systemButtonFrame
    highlightthickness
    4
    image

    justify
    center
    overrelief

    padx
    12
    pady
    3
    relief
    flat
    repeatdelay
    0
    repeatinterval
    0
    state
    normal
    takefocus

    text

    textvariable

    underline
    -1
    width
    0
    wraplength
    0

That was a lot of spaces >.<

In this block the first is the key and the second is the value of said key. The keys method (for all widgets) returns all of the keys in said widget. Config returns the keys and what they apply to (cursor vs Cursor) where keys just gives a list of all attributes.

感性 2024-09-16 03:17:36

它可能不应该出现在生产代码中,因为它使用 _tkinter,但你可以这样做:

import tkinter as tk
import _tkinter

def con_dict(w):
    options = {}
    for i in w.keys():
        value = w.cget(i)
        options[i] = value.string if type(value) is _tkinter.Tcl_Obj else value
    return options

root = tk.Tk()
widget = tk.Label(
    root, text='test', relief='raised', borderwidth=3)
widget.pack()
print(con_dict(widget))
root.mainloop()

which 为我输出:

{'activebackground': 'SystemButtonFace', 'activeforeground':
'SystemButtonText','锚点':'中心','背景':
'SystemButtonFace', 'bd': 3, 'bg': 'SystemButtonFace', '位图': '',
'borderwidth': 3, 'compound': 'none', 'cursor': '',
'disabledforeground': 'SystemDisabledText', 'fg': 'SystemButtonText',
'字体':'TkDefaultFont','前景':'SystemButtonText','高度':
0, 'highlightbackground': 'SystemButtonFace', 'highlightcolor':
'SystemWindowFrame','突出显示厚度':0,'图像':'','对齐':
'center', 'padx': 1, 'pady': 1, 'relief': '凸起', 'state': '正常',
'takefocus':'0','文本':'测试','textvariable':'','下划线':-1,
“宽度”:0,“包裹长度”:0}

It probably shouldn't be in production code since it makes use of _tkinter, but you can do:

import tkinter as tk
import _tkinter

def con_dict(w):
    options = {}
    for i in w.keys():
        value = w.cget(i)
        options[i] = value.string if type(value) is _tkinter.Tcl_Obj else value
    return options

root = tk.Tk()
widget = tk.Label(
    root, text='test', relief='raised', borderwidth=3)
widget.pack()
print(con_dict(widget))
root.mainloop()

which outputs for me:

{'activebackground': 'SystemButtonFace', 'activeforeground':
'SystemButtonText', 'anchor': 'center', 'background':
'SystemButtonFace', 'bd': 3, 'bg': 'SystemButtonFace', 'bitmap': '',
'borderwidth': 3, 'compound': 'none', 'cursor': '',
'disabledforeground': 'SystemDisabledText', 'fg': 'SystemButtonText',
'font': 'TkDefaultFont', 'foreground': 'SystemButtonText', 'height':
0, 'highlightbackground': 'SystemButtonFace', 'highlightcolor':
'SystemWindowFrame', 'highlightthickness': 0, 'image': '', 'justify':
'center', 'padx': 1, 'pady': 1, 'relief': 'raised', 'state': 'normal',
'takefocus': '0', 'text': 'test', 'textvariable': '', 'underline': -1,
'width': 0, 'wraplength': 0}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文