0

我正在尝试学习安排/定义代码的最佳方式。以下面为例,我必须编写两次 tkMessageBox 命令。我确实尝试在 getText() 中创建一个 def 并引用它,但它没有用。

因此请提问

1)我如何安排代码,以便我可以将 tkMessageBox 命令放在 def 或其他东西中,甚至在 getText() 中也可以引用它

2)考虑到最佳实践,这段代码是否应该以不同的方式布局?如果是这样,如何/为什么?

先感谢您

import Tkinter as tk
import tkMessageBox
import base64

myText = 'empty'

def getText():
    global myText
    myText = inputBox.get()
    entered = "You entered: " + myText
    encoded = "We encoded: " + base64.encodestring(myText)
    Button1 = tk.Button(root, command = tkMessageBox.showinfo("Press me", entered))
    Button1.pack()
    Button2 = tk.Button(root, command = tkMessageBox.showinfo("Press me", encoded))
    Button2.pack()
    root.destroy()

root = tk.Tk()

# Text label
simpleTitle = tk.Label(root)
simpleTitle['text'] = 'Please enter your input here'
simpleTitle.pack()

# The entry box widget
inputBox = tk.Entry(root)
inputBox.pack()

# The button widget
button = tk.Button(root, text='Submit', command=getText)
button.pack()

tk.mainloop()
4

4 回答 4

2

我不确定您是否在询问是否重构代码,但用于布局/格式化 Python 代码的最终样式指南是PEP 8 -- Python 代码样式指南

于 2012-07-17T15:48:40.887 回答
1

还值得注意的是,有一个 pep8 命令行实用程序可以扫描您的源代码以查找(大多数)pep8 违规

pip install pep8
pep8 source_code_to_check
于 2012-07-17T16:15:28.273 回答
0

您不能将 tkMessageBox 命令分配给一个变量,然后引用该变量两次吗?该变量可以放在您的函数中。

于 2012-07-17T15:51:37.153 回答
0

删除任何重复的代码是一个很好的做法,这是软件设计过程中的一个步骤,称为重构,在另一个答案中提到。

在您的 tkMessageBox 示例的特定情况下,您将执行类似的操作。

command = tkMessageBox.showinfo("Press me", entered)
Button1 = tk.Button(root, command)
Button1.pack()
Button2 = tk.Button(root, command)
Button2.pack()

这会将您的命令合并到一个位置,以便以后轻松维护。虽然这很可能对您的代码示例来说不是问题,但这是一个好习惯,因为它会减少必要的调用次数,从而在将来优化您的代码。

于 2012-07-17T15:58:16.567 回答