Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 名称';设置小时';没有定义_Python_Python 3.x_Tkinter - Fatal编程技术网

Python 名称';设置小时';没有定义

Python 名称';设置小时';没有定义,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我正在用tkinter编写python代码。我想通过按“j”将标签设置时间的状态更改为“活动”。每次运行代码时,我都会收到一个错误消息,表示未定义set_hour。我需要在这里使用“self”吗?为什么你能解释一下。多谢各位 class SetClock: def __init__(self, parent): self.myParent = parent self.current_datetime_label = tkinter.Label(root, text=dateti

我正在用tkinter编写python代码。我想通过按“j”将标签设置时间的状态更改为“活动”。每次运行代码时,我都会收到一个错误消息,表示未定义set_hour。我需要在这里使用“self”吗?为什么你能解释一下。多谢各位

class SetClock:
def __init__(self, parent):
    self.myParent = parent

    self.current_datetime_label = tkinter.Label(root, text=datetime.datetime.now(), bg = "black", foreground="white").grid(row=1)
    #current_time_label.pack()

    self.menu_label = tkinter.Label(root, text="Menu", bg="sky blue", foreground="black",width=18).grid(row=2)
    self.set_day = tkinter.Label(root, text="Set Day", bg="blue",foreground="white",width=9,state="active").grid(row=2, column=1)
    self.set_hour = tkinter.Label(root, text="Set Hour",bg="blue",foreground="white",width=9).grid(row=2, column=2)
    self.set_mintutes = tkinter.Label(root, text="Set Minutes", bg="blue",foreground="white",width=10).grid(row=2, column=3)
    self.exit_label = tkinter.Label(root, text="Exit", bg="black", foreground="white").grid(row=2, column=4)

    self.day_menu_label = tkinter.Label(root, text="Day",bg="sky blue",width=18).grid(row=3)
    #menu_label.pack(side="right")
    #current_time_label.pack()

def navigate_menu(event):
    current_pressed = str(event.char)
    print("pressed", current_pressed)
    if current_pressed is 'j':
        print("ok")
        set_hour.config(state="active")

root = Tk()    
#frame = Frame(root)
setclock = SetClock(root)
root.title("Set Clock")
root.minsize(width=500,height=500)
root.bind("<Key>",SetClock.navigate_menu)
root.mainloop()
类设置时钟:
定义初始化(自身,父级):
self.myParent=parent
self.current\u datetime\u label=tkinter.label(root,text=datetime.datetime.now(),bg=“black”,front=“white”).grid(row=1)
#当前\u时间\u标签.pack()
self.menu_label=tkinter.label(根,text=“menu”,bg=“天蓝色”,前台=“黑色”,宽度=18)。网格(行=2)
self.set_day=tkinter.Label(根,text=“set day”,bg=“blue”,front=“white”,width=9,state=“active”).grid(行=2,列=1)
self.set_hour=tkinter.Label(根,text=“set hour”,bg=“blue”,front=“white”,width=9)。网格(行=2,列=2)
self.set\u mintutes=tkinter.Label(root,text=“set Minutes”,bg=“blue”,front=“white”,width=10)。网格(行=2,列=3)
self.exit_label=tkinter.label(root,text=“exit”,bg=“black”,foreground=“white”).grid(行=2,列=4)
self.day\u menu\u label=tkinter.label(根,text=“day”,bg=“天蓝色”,宽度=18)。网格(行=3)
#菜单标签包装(侧边=“右”)
#当前\u时间\u标签.pack()
def导航菜单(事件):
当前按下=str(event.char)
打印(“按下”,当前\按下)
如果当前按下的_为“j”:
打印(“确定”)
设置_hour.config(state=“active”)
root=Tk()
#帧=帧(根)
设置时钟=设置时钟(根)
root.title(“设置时钟”)
root.minsize(宽度=500,高度=500)
root.bind(“,SetClock.navigate_菜单)
root.mainloop()

您需要将
导航菜单
定义为一种实例方法:

def navigate_menu(self, event):
    current_pressed = str(event.char)
    print("pressed", current_pressed)
    if current_pressed is 'j':
        print("ok")
        self.set_hour.config(state="active")
绑定时,请改为传递绑定方法:

root.bind("<Key>", setclock.navigate_menu)
grid()
返回
None
,因此您必须执行以下操作

self.set_hour = tkinter.Label(...)
self.set_hour.grid(...)
self.set_hour = tkinter.Label(...)
self.set_hour.grid(...)