一意のコマンド引数を使用して tkinter でボタンをプログラム的に作成する
当面のタスクは、for ループを使用して tkinter インターフェース内に複数のボタンを生成することです。各ボタンには、現在の反復回数を表す一意のコマンド引数が含まれている必要があります。ただし、既存のコードでは、一貫した値が出力されたボタンが生成されます。これは、コマンド引数の割り当てに潜在的な問題があることを示しています。
問題: 反復値の消失
提供されたコードは、 「ゲーム 1」から「ゲーム 3」までのタイトルが付いたボタン。これらのボタンのいずれかをクリックすると、出力される値は常に 2 で、最後の反復回数に対応します。これは、コマンド引数が個々のボタンに関連付けられているのではなく、単一のエンティティとして扱われていることを示唆しています。
解決策: 反復値の保持
この問題を解決するには、各ボタンのコマンドを定義するときに現在の反復値 (i) を保存します。これを実現するには、変更されたラムダ式が必要です。
command=lambda i=i: self.open_this(i)
このラムダ式は、i の現在の値を i という名前の変数に割り当てます。これにより、作成時に i 値が取得され、特定のボタンに付加されることが保証されます。その結果、各ボタンは固有の反復回数にアクセスできるようになります。
Lambda クロージャを理解する
i=i を使用すると、クロージャは i の現在の値を保存します。関数が呼び出されたときの i の値に依存するのではなく、ラムダが定義されたときに実行されます。これにより、各ボタンに必要な情報が保存されます。
修正コード
上記の変更により、修正されたコードは次のようになります。
def createGameURLs(self): self.button = [] for i in range(3): self.button.append(Button(self, text='Game '+str(i+1), command=lambda i=i: self.open_this(i))) self.button[i].grid(column=4, row=i+1, sticky=W) def open_this(self, myNum): print(myNum)
これで、いずれかのボタンをクリックすると、対応する反復回数が正確に出力され、最初の問題は解決されました。
以上がTkinter ボタン ループのコマンドに一意の引数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

forhandlinglaredataSetsinpython、usenumpyArrays forbetterperformance.1)numpyarraysarememory-effictientandfasterfornumericaloperations.2)nusinnnnedarytypeconversions.3)レバレッジベクトル化は、測定済みのマネージメーシェイメージーウェイズデイタイです

inpython、listsusedynamicmemoryallocation with allocation、whilenumpyArraysalocatefixedmemory.1)listsallocatemorememorythanneededededinitivative.2)numpyArrayasallocateexactmemoryforements、rededicablebutlessflexibilityを提供します。

inpython、youcanspecthedatatypeyfelemeremodelernspant.1)usenpynernrump.1)usenpynerp.dloatp.ploatm64、フォーマーpreciscontrolatatypes。

numpyisessentialfornumericalcomputinginpythonduetoitsspeed、memory efficiency、andcomprehensivematicalfunctions.1)それは、performsoperations.2)numpyArraysaremoremory-efficientthanpythonlists.3)Itofderangeofmathematicaloperty

contiguousMemoryAllocationisucial forArraysは、ForeffienceAndfastelementAccess.1)iteenablesConstantTimeAccess、O(1)、DuetodirectAddresscalculation.2)itemprovesefficiencyByAllowingMultiblementFechesperCacheLine.3)itimplifieMememm

slicingapythonlistisdoneusingtheyntaxlist [start:stop:step] .hore'showitworks:1)startisthe indexofthefirstelementtoinclude.2)spotisthe indexofthefirmenttoeexclude.3)staptistheincrementbetbetinelements

numpyallows forvariousoperationsonarrays:1)basicarithmeticlikeaddition、減算、乗算、および分割; 2)AdvancedperationssuchasmatrixMultiplication;

Arraysinpython、特にnumpyandpandas、aresentialfordataanalysis、offeringspeedandeficiency.1)numpyarraysenable numpyarraysenable handling forlaredatasents andcomplexoperationslikemoverages.2)Pandasextendsnumpy'scapabivitieswithdataframesfortruc


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









