python-3.x - Python: TypeError: 'Label' object is not callable
问题描述
from PIL import Image, ImageTk
from tkinter import *
from tkinter import Label
def open_window():
menu = Toplevel(root)
menu.geometry("800x800")
menu.title("my game's menu")
menu.resizable(False, False)
menu.geometry("800x800")
lbl = Label(menu, text ="Hello!").pack
menu.mainloop()
root = Tk()
root.geometry("400x300")
Label = Label(root, text="Are you ready?")
Label.pack()
root.title("quick question")
btn = Button(root, text="Yes", command= open_window)
btn.pack(padx=20, pady = 20)
root.mainloop()
I got this error while I was working on previously seen code: File "C:\Users\User\Desktop\naujas zaidimas\scratch.py", line 11, in open_window lbl = Label(menu, text ="Hello!").pack TypeError: 'Label' object is not callable
Does anyone know why/how to fix it?
解决方案
该代码有许多相当明显的错误和一个隐蔽的错误
此导入在当前代码中不起作用
from PIL import Image, ImageTk
不是导入 tkinter 的好方法或首选方法
这将在以后引起问题
from tkinter import *
这对于当前的 inport 方法是不必要的
from tkinter import Label
def open_window():
Python 函数的规则是:在函数中创建的名称保留在函数中。
它需要一条global
指令才能在您的代码中的其他地方提供“菜单”
menu = Toplevel(root)
menu.geometry("800x800")
menu.title("my game's menu")
menu.resizable(False, False)
重复几何指令
menu.geometry("800x800")
此对象已被定义为 Label 对象,因此尝试命名它会引发TypeError
lbl = Label(menu, text ="Hello!").pack()
这是不必要的,因为root.mainloop()
已经执行
menu.mainloop()
root = Tk()
root.geometry("400x300")
这是另一个由选择的导入方法引起的命名问题
Label = Label(root, text="Are you ready?")
Label.pack()
root.title("quick question")
此按钮将使您能够创建许多Toplevel
窗口
问题是,它们都将被称为“菜单”!?
这是阴险的错误
btn = Button(root, text="Yes", command= open_window)
btn.pack(padx=20, pady = 20)
root.mainloop()
# This solution avoids all the previous problems
import tkinter as tk
root = tk.Tk()
root.title("quick question")
root.geometry("400x300")
tk.Label(root, text = "Are you ready?").pack()
# This will give tkinter time to process the given instructions.
root.update()
menu = tk.Toplevel(root)
# withdraw will make menu temporarily invisible
menu.withdraw()
menu.title("my game's menu")
menu.geometry("800x800")
menu.resizable(False, False)
tk.Label(menu, text = "Hello!").pack()
# command will now make menu window visible
btn = tk.Button(root, text = "Yes", command = menu.deiconify)
btn.pack(padx = 20, pady = 20)
root.mainloop()
推荐阅读
- huawei-mobile-services - 在华为Mate 30 Pro上测试集成HMS Health Kit的应用程序时,为什么无法获取步数?
- ruby-on-rails - 如何在 Rails 控制器中使用闭包?
- python - Tkinter 有条件的切换帧
- c# - 鼠标移动 x 轴锁定
- python - 在批次上应用程式化会导致问题
- intellij-idea - 有没有办法在intellij 15中断点整个项目
- java - MPAndroidChart 自定义水平条形图
- android - 将适配器与不同的布局管理器合并
- python - 有没有办法将屏幕上的所有文本放入 python3 中的数组中
- java - 在共享对象文件中查找 Android Java 可用方法