0

コードを整理/定義する最良の方法を学ぼうとしています。以下を例に取ると、tkMessageBox コマンドを 2 回記述する必要があります。getText() 内で定義を作成して参照しようとしましたが、うまくいきませんでした。

質問がありますのでよろしくお願いします

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 -- Style Guide for Python Codeです。

于 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 の例の特定のケースでは、次のようにします。

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

これにより、コマンドが 1 つの場所に統合され、後で簡単に管理できるようになります。これはコード サンプルでは問題にならない可能性が高いですが、必要な呼び出しの数を減らし、将来的にコードを最適化できるため、実践することをお勧めします。

于 2012-07-17T15:58:16.567 に答える
0

tkMessageBox コマンドを変数に割り当てて、この変数を 2 回参照することはできませんか? 変数は関数に配置できます。

于 2012-07-17T15:51:37.153 に答える