普通、
python
1def x(): 2 return 1 3print(x())
というコードを書いたら
1
とでます。
関数内で定義した関数にreturnすることは可能でしょうか?
これがしたい理由は、一回buttonで関数を呼ぶので、returnができないことです。
本コードはこれです
import tkinter import datetime import math import calendar import ctypes import sys check = 0 # screensize 取得,中央定義 user32 = ctypes.windll.user32 screensize_x = user32.GetSystemMetrics(0) screensize_y = user32.GetSystemMetrics(1) center_x = screensize_x / 2 center_y = screensize_y / 2 window_open_flag = 0 def window_open(): global calendar_tk global window_open_flag calendar_tk = tkinter.Toplevel() calendar_tk.geometry('413x245+%d+%d' % (center_x - 207,center_y - 122)) calendar_tk.title('かれんだー') calendar_tk.configure(bg='#FFFFB3') calendar_tk.resizable(width=0, height=0) calendar_tk.focus_set() calendar_tk.grab_set() window_open_flag = 1 def make_calendar(year, month, month_first_day): global month_lbl global before_month_button global after_month_button global lbl global button global day_list if window_open_flag == 0: window_open() en_month_lbl = tkinter.Label(calendar_tk,text=monthlist[month-1], bg='#FFFFB3') en_month_lbl.grid(row=2, column=3) sat_color = '#0000FF' sun_color = '#FF0000' for i in range(len(day_list)): lbl[i] = tkinter.Label(calendar_tk, text=day_list[i], bg='#FFFFB3') lbl[i].grid(row=3, column=i) button = [0] * calendar.monthrange(year, month)[1] def make_date_button_push(i): def date_button_push(): global check click_day = month_first_day + i-1 print(year,month,click_day) check = 1 return year,month,click_day return date_button_push date_button_push = {} for i in range(calendar.monthrange(year, month)[1]): date_button_push[i] = make_date_button_push(i) for i in range(calendar.monthrange(year, month)[1]): placey = math.floor((i+1 + month_first_day + 6) / 7) placex = (i + month_first_day) % 7 button[i] = tkinter.Button(calendar_tk, text=i+1, width=7, command=date_button_push[i]) button[i].grid(row=placey+4, column=placex) calendar_tk.mainloop()
これの76行目の文です。このreturn文をmake_calendar関数の呼んだところにreturnしたいと思ってます
追記
「def make_date_button_push(i):
略
でリターンさせたら、ボタンのcommandに行きますよね?」
は
def make_date_button_push(i): def date_button_push(): global check click_day = month_first_day + i-1 print(year,month,click_day) check = 1 return year,month,click_day
です
回答1件
あなたの回答
tips
プレビュー