string python里面是什么意思

时间:2017-06-29 10:38:51

标签: python tkinter

" CmdBtn [' menu'] = CmdBtn.menu"在倒数第二行意味着。

def makeCommandMenu():
    CmdBtn = Menubutton(mBar, text='Button Commands', underline=0)
    CmdBtn.pack(side=LEFT, padx="2m")
    CmdBtn.menu = Menu(CmdBtn)
    ...
    ...
    CmdBtn['menu'] = CmdBtn.menu
    return CmdBtn

4 个答案:

答案 0 :(得分:0)

使用x[y] = z时,会调用__setitem__方法。

x.__setitem__(y, z)

在您的情况下,CmdBtn['menu'] = CmdBtn.menu表示

CmdBtn.__setitem__('menu', CmdBtn.menu)

Menubutton类确实提供了__setitem__ method。看起来这用于设置"资源值" (在这种情况下为CmdBtn.menu)给定密钥('menu')。

答案 1 :(得分:0)

这不是“数组中的字符串”。

括号运算符用于某种序列(通常是listtuple)映射(通常是dict或字典)或某些序列的项目访问其他类型的特殊对象(例如此MenuButton对象,它不是序列或映射)。与其他语言不同,在python中,允许任何对象使用此运算符。

list类似于其他语言的“数组”。它可以包含任何类型的对象的混合,并且它维护对象的顺序。当您想要维护有序的对象序列时,list对象非常有用。您可以使用其索引访问list中的对象,如下所示(索引从零开始):

x = [1,2,3] # this is a list
assert x[0] == 1 # access the first item in the list
x = list(range(1,4)) # another way to make the same list

当您想要将值与键相关联时,dict(字典)非常有用,因此您可以稍后使用键查找值。像这样:

d = dict(a=1, b=2, c=3) # this is a dict
assert x['a'] == 1 # access the dict
d = {'a':1, 'b':2, 'c':3} # another way to make the same dict

最后,您可能还会遇到也使用相同项目访问界面的自定义对象。在Menubutton情况下,['menu']只是访问响应密钥'menu'的某个项目(由tkinter API定义)。您也可以使用item-access创建自己的对象类型(下面是python 3代码):

class MyObject:
    def __getitem__(self, x):
        return "Here I am!"

除了为您提供的键值或索引值返回相同的字符串外,此对象没有太大作用:

obj = MyObject()
print(obj [100]) # Here I am!
print(obj [101]) # Here I am!
print(obj ['Anything']) # Here I am!
print(obj ['foo bar baz']) # Here I am!

答案 2 :(得分:0)

首先,在Python everything is an object中,方括号表示此对象是可订阅(例如tuplelistdictstring等等。 Subscriptable意味着此对象至少实现了__getitem__()方法(以及您的__setitem__())。

通过这些方法,您可以轻松地与班级成员互动,因此不要构建自己的榜样,以了解其他人的代码。

试试这个代码段:

class FooBar:
    def __init__(self):
        #   just two simple members
        self.foo = 'foo'
        self.bar = 'bar'

    def __getitem__(self, item):
        #   example getitem function
        return self.__dict__[item]

    def __setitem__(self, key, value):
        #   example setitem function
        self.__dict__[key] = value

#   create an instance of FooBar
fb = FooBar()

#   lets print members of instance
#   also try to comment out get and set functions to see the difference
print(fb['foo'], fb['bar'])

#   lets try to change member via __setitem__
fb['foo'] = 'baz'

#   lets print members of instance again to see the difference
print(fb['foo'], fb['bar'])

答案 3 :(得分:0)

这是CmdBtn.configure(menu=CmdBtn.menu)

的简写

设置窗口小部件选项的方法通常是在创建时(例如:Menubutton(..., menu=...))或使用configure方法(例如:CmdBtn.configure(menu=...) .Tkinter提供第三种方法,即将小部件视为字典,其中配置值是字典的键(例如:CMdBtn['menu']=...

官方python tkinter文档的<{3}}部分介绍了这一点