双击时Tkinter程序不工作

2024-10-01 00:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我是tkinter的新手,做了一个简单的小程序:

哦!Python3

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)

如果我在空闲状态下按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

我试过在终端和其他在线帖子上执行它,但它总是抛出这个错误/另一个“无法导入那个”错误/名称错误。 另外,当我运行程序时,创建了一个文件夹(pycache),其中有一个名为特金特.cpython-37.2亿美元 我在windows10上使用python3.7,python被添加到PATH,我的其他python安装被禁用。你知道吗


Tags: textaddfalseiftkinterdefrootcommand
1条回答
网友
1楼 · 发布于 2024-10-01 00:27:49

桌面上有一个名为tkinter.py的文件。任何在模块搜索路径中包含桌面的程序都无法找到内置的tkinter模块,因为它们具有相同的名称。你知道吗

尝试将该文件重命名为其他文件。你知道吗

相关问题 更多 >