python - 直接使用 grid() 或 pack() 而不创建变量是不是很糟糕?
问题描述
我目前正在学习 Tkinter,我想知道对于除了将它们放在屏幕上之外我没有使用的小部件,执行以下操作是否是一个坏习惯。
Label(root, text="Hello World!").grid(row=0, column=0)
或者最好使用这样的两行并创建一个变量:
myLabel = Label(root, text="Hello World!")
myLabel.grid(row=0, column=0)
解决方案
这本身还不错(假设您以后不需要参考小部件),但我个人认为最好始终使用变量。根据我的经验,随着应用程序的发展,一组小部件的布局将发生变化,而不是小部件本身的创建。我认为将小部件创建组合在一起,然后将布局命令组合在一起很聪明。它使布局更容易从代码中可视化,并使布局调试更容易。
另外,当然,如果您稍后需要访问变量,那么您必须使用变量。
因此,虽然使用单个小部件根本不重要,但当您有多个小部件时,它可能很重要。鉴于您有时必须使用变量,我认为最好始终保持一致并始终使用变量。
例如,考虑以下代码:
label1 = tk.Label(root, text="First Name:")
label2 = tk.Label(root, text="Last Name:")
entry1 = tk.Entry(root)
entry2 = tk.Entry(root)
label1.grid(row=0, column=0, sticky="e")
entry1.grid(row=0, column=1, sticky="ew")
label2.grid(row=1, column=0, sticky="e")
entry2.grid(row=1, column=1, sticky="ew")
我个人认为上面的内容比以下两个示例中的任何一个都更具可读性。
内联调用grid
:
tk.Label(root, text="First Name:").grid(row=0, column=0, sticky="e")
tk.Label(root, text="Last Name:").grid(row=1, column=0, sticky="e")
tk.Entry(root).grid(row=0, column=1, sticky="ew")
tk.Entry(root).grid(row=1, column=1, sticky="ew")
grid
与小部件创建交错调用:
label1 = tk.Label(root, text="First Name:")
label1.grid(row=0, column=0, sticky="e")
label2 = tk.Label(root, text="Last Name:")
label2.grid(row=1, column=0, sticky="e")
entry1 = tk.Entry(root)
entry1.grid(row=0, column=1, sticky="ew")
entry2 = tk.Entry(root)
entry2.grid(row=1, column=1, sticky="ew")
推荐阅读
- javascript - 如何将值附加到 ES6 Map
- c# - 是否通过收益回报将处置降至最低?
- php - 如何使用 PHP 在任何目录中上传文件
- javascript - 如何在 Google Cloud 功能(Firebase)的快照中获取子快照?
- excel - 宏没有按应有的方式划分 - 第 2 部分
- flutter - 如何处理不同分辨率类型的字体大小
- python-3.x - 从奇数字典中填充熊猫数据框
- xml - 使用 Hive XML SerDe 将 XML 解析为多个表
- typescript - 打字稿:在构造函数内的函数中分配只读属性
- c# - 如何使用 Mediatr 和 Moq 在命令中设置变量?