我对tkinter相当陌生,并编写了一个简单的小程序:
from tkinter import *
import tkinter.messagebox
import time
checked = False
pressed = False
rthat = False
rthat2 = False
fe = True
root = Tk()
def hw():
print('Hello World!')
def custom():
wp = input('Input: ')
print(wp)
def Except():
wp = input('Input: ')
raise Exception(wp)
def ChCh():
global checked
if checked:
checked = False
else:
checked = True
def cPop():
global fe
user = input('Input (WINDOW TITLE): ')
user2 = input('Input (TEXT): ')
user3 = input('What type do you want? ("ERROR"/"WARNING"/"INFO"): ')
if user3 == 'INFO':
tkinter.messagebox.showinfo(user, user2)
elif user3 == 'ERROR':
tkinter.messagebox.showerror(user, user2)
elif user3 == 'WARNING':
tkinter.messagebox.showwarning(user, user2)
else:
tkinter.messagebox.showinfo(user, user2)
if fe:
fe = False
tkinter.messagebox.askquestion('First Experience', 'Was your experience with this program good?')
def destrth():
explainL.destroy()
check.destroy()
Pass.destroy()
BackB.destroy()
Submit.destroy()
startS()
def submitted():
global Invalid, Unchecked, rthat, rthat2
if checked:
if Pass.get() == "banana":
root.destroy()
else:
if rthat2:
rthat2 = False
Unchecked.destroy()
if rthat:
Invalid.destroy()
Invalid = Label(root, text="Invalid password!", fg="red")
rthat = True
Invalid.pack()
else:
if rthat:
rthat = False
Invalid.destroy()
if rthat2:
Unchecked.destroy()
Unchecked = Label(root, text="Please check the CheckBox!", fg="red")
rthat2 = True
Unchecked.pack()
def exit1():
root.geometry("400x150")
global explainL, check, Pass, BackB, Submit
subMenu.destroy()
ExitMenu.destroy()
button.destroy()
explainL = Label(root, text="Enter password: ")
check = Checkbutton(root, text="I Agree to the fact that pressing SUBMIT will close this window.", command=ChCh)
Pass = Entry(root)
BackB = Button(root, text="BACK", command=destrth)
Submit = Button(root, text="SUBMIT", command=submitted)
explainL.pack()
Pass.pack()
check.pack()
Submit.pack()
BackB.pack(side=RIGHT)
def startS():
root.geometry("200x220")
global subMenu, button, ExitMenu
if rthat2:
Unchecked.destroy()
if rthat:
Invalid.destroy()
button = Button(root, text="Quit", command=exit1, height=5, width=5)
menu = Menu(root)
root.config(menu=menu)
subMenu = Menu(menu)
menu.add_cascade(label="print", menu=subMenu)
subMenu.add_command(label="Hello World!", command=hw)
subMenu.add_command(label="Custom", command=custom)
subMenu.add_separator()
subMenu.add_command(label="Raise Exception (CUSTOM)", command=Except)
subMenu.add_command(label="Show PopUp (CUSTOM)", command=cPop)
ExitMenu = Menu(menu)
menu.add_cascade(label="Exit", menu=ExitMenu)
ExitMenu.add_command(label="Quit", command=exit1)
button.pack(side=LEFT)
button.place(relx=0.5, rely=0.5, anchor=CENTER)
startS()
root.mainloop()
time.sleep(7)
如果我通过在IDLE中按F5来执行该代码,则该代码工作得很好,但是当我双击它的快捷方式时,它将抛出此错误:
Traceback (most recent call last):
File "moreTk.py", line 3, in <module>
import tkinter
File "C:\Users\RolandPC\Desktop\tkinter.py", line 8, in <module>
root = Tk()
NameError: name 'Tk' is not defined
我已经尝试从终端和其他在线帖子上执行它,但是它只是不断抛出该错误/另一个“无法导入该错误” / NameErrors。 另外,当我运行程序时,创建了一个文件夹( pycache ),其中有一个名为tkinter.cpython-37.pyc的文件。 我在Windows 10上使用python 3.7,将Python添加到PATH,并且禁用了其他的python安装。
答案 0 :(得分:5)
您的桌面上有一个名为tkinter.py
的文件。在其模块搜索路径中包含桌面的任何程序都将无法找到内置的tkinter模块,因为它们具有相同的名称。
尝试将该文件重命名为其他文件。