0

私の質問を一文で表現する方法が完全にはわかりません。Python を使用して、アスリートの走行距離を記録できるカレンダーを作成しています。左上隅に月の番号を含む 7x4 グリッドを含み、中央に「今日のワークアウトを記録する」というボタンを含むカレンダーを作成しました。

このボタンは新しいウィンドウを開き、ユーザーが走行距離と速さを入力できるようにし、ユーザーが新しいウィンドウの下部にある「ログ」を押すと、その日の走行距離とペースを表示する必要があります。ボタンが押されました。

私の問題は、クリックされた特定の日だけを情報に置き換える方法がわからないことです。毎月同じボタンを作成したくなかったので、毎日同じボタンを (同じコマンドと共に) 使用しています。グリッド内のどこにあるかを知るボタンが必要で、走行距離とペースで配置する場所をラベルに伝えることができます。

ラムダが役立つかどうかを調査しようとしましたが、役に立ちませんでした。ここに私のコードの関連する部分があります(まだPythonにはかなり新しく、おそらく少しずさんです、申し訳ありません)。

 count = 0      #Code for button on every day in the month
    dayCounter = numDays[0]
    rowCount = 3
    while (numDays[1] > count):
        count = count + 1
        logButton = Button(self, text=("Log Today's Workout"), command = self.log)
        logButton.grid(column=dayCounter, row=rowCount)
        if dayCounter == 6:
            rowCount = rowCount + 1   
        if dayCounter <= 5:
            dayCounter = dayCounter + 1
        else:
            dayCounter = 0



def calculate(self): 
    displayPace = Label(self, text= paceMin + ":" + formattedSec + " a mile.")
    displayPace.grid(column=???, row=???)

多くのコードを省略しました。表示されるのは、毎日にボタンを付けるコードと、カレンダーにペースを配置するコードです。行と列に配置するためにいくつかのことを試しました。ほとんどの場合、エラー メッセージが表示されるか、すべてのボックスに同じラベルが付けられます。ボタンを変更する方法、またはクリックされたボタンのみを置き換えるために行と列に何を入れるかを知る必要があります。他に何か必要な場合は、これを非常に頻繁に確認し、頻繁に更新します。

4

2 に答える 2

0

上記の投稿とこれを使用して、イベントがどのように機能するかについていくつかの調査を行いました (私はそれらについて聞いたことがありませんでした)。

grid_info = event.widget.grid_info()
self.displayRow = grid_info["row"]
self.displayColumn = grid_info["column"]

logButton = Button(self, text=("Log Today's Workout"))
logButton.grid(column=dayCounter, row=rowCount
logButton.bind('<Button-1>', self.log)

displayPace = Label(self, text= paceMin + ":" + formattedSec + " a mile.")
displayPace.grid(column=self.displayColumn, row=self.displayRow)
于 2016-04-28T03:55:15.430 に答える