Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TkInter中小部件的.pack和.configure之间的区别?_Python_Methods_Tkinter - Fatal编程技术网

Python TkInter中小部件的.pack和.configure之间的区别?

Python TkInter中小部件的.pack和.configure之间的区别?,python,methods,tkinter,Python,Methods,Tkinter,我目前正在学习一篇文章,试图在我试图改进Python3编程的过程中,教自己更多关于TkInter的知识。如有必要,可在此处找到文本: 在标有“tt040.py”的部分中,有一个示例代码,部分代码是: self.button1 = Button(self.myContainer1) self.button1["text"] = "Hello, World!" ### (1) self.button1["background"] = "green" ### (1)

我目前正在学习一篇文章,试图在我试图改进Python3编程的过程中,教自己更多关于TkInter的知识。如有必要,可在此处找到文本:

在标有“tt040.py”的部分中,有一个示例代码,部分代码是:

    self.button1 = Button(self.myContainer1)
    self.button1["text"] = "Hello, World!"   ### (1)
    self.button1["background"] = "green"     ### (1)
    self.button1.pack()


    self.button2 = Button(self.myContainer1)
    self.button2.configure(text="Off to join the circus!") ### (2)
    self.button2.configure(background="tan")               ### (2)
    self.button2.pack()


    self.button3 = Button(self.myContainer1)
    self.button3.configure(text="Join me?", background="cyan")  ### (3)
    self.button3.pack()
这部分代码的解释如下:

“(2)对于button2,过程基本上与button1相同,但我们使用按钮的内置“配置”方法,而不是访问按钮的字典

(3) 对于button3,我们看到configure方法可以接受多个关键字参数,因此我们可以在一条语句中设置多个选项。”


这个解释到底是什么意思?与中一样,.configure方法的实际区别(与.pack)或需求是什么?“按钮的字典”是什么意思?

每个小部件都有一个属性字典(
text
background
,…)。您可以使用常规字典语法访问它,如
self.button1[“text”]=“Hello,World!”
或使用您在其他示例中看到的
configure
方法。这只是为了设置小部件的外观和行为

完成后,调用
pack
让Tkinter现在就可以使用小部件了。然后它将被显示,等等

您可以通过在解释器中逐步执行Tkinter命令看到这一点,如下所示:

>>> from Tkinter import *
>>> root = Tk()
>>> bt = Button(root)
>>> bt['text'] = 'hello'
>>> bt.pack()

Tkinter对象属性不是通过python属性机制处理的(即您可以执行
self.button1.text=“hello”
)。相反,tkinter提供了两种更改此属性的方法:

  • 将该对象用作词汇:
    self.button1[“text”]=“hello”
  • 对命名参数使用
    config
    方法:
    self.button1.config(text=“hello”)
两者是等价的。请注意,您还可以通过构造函数命名参数传递此类初始化值,以便在一个步骤中执行实例化和初始化:
self.button1=Button(self.myContainer1,text=“hello”)

pack
具有完全不同的用途。这是一个几何管理说明。在没有参数的情况下使用
button1.pack()
ask将
button1
放置在其父窗口小部件的前一个同级(如果有)下面。可以使用指定相对位置或调整行为大小


tkinter还有其他几何体管理器:grid和place,请参阅以进行比较。

您是否知道未选择属性机制的原因?早在Python1.x中首次添加Tkinter时,
\uuuuu setattr\uuuuu
方法和朋友就不存在了吗?还是有意识地认为使用
\uuuuu setitem\uuuuu
会更好?我目前正在寻找是否有一个旧的政治公众人物或邮件列表,其中讨论了这一点,但我没有找到任何东西。