Windows10 Python程序消失

时间:2018-03-17 03:36:00

标签: python python-3.x tkinter

我写了一个名为simplifier的py文件。通常,当您双击py文件时,Windows应该为您提供控制台和程序。如下图所示。

enter image description here

然而,我点击了我的py文件,控制台出现并在闪存中消失,程序根本没有出现。通常这意味着我的代码中应该存在一些错误。所以我在IDLE中打开py文件并运行它,期望shell给我一个错误。但是,它没有报告任何内容。我不知道如何找到错误。该文件过去运行良好,它开始表现得像那样。我测试只将“输入('')”放在py文件中,它按预期工作。我的一些程序也运行良好,但其余程序都没有。

这个错误可能来自我导入的模块吗?我导入了自己编写的一些模块(ez和eztk)。我检查了那些功能。他们没事。

这是简化码的代码。

from tkinter import *
from tkinter import messagebox
from eztk import *
import ez

root=Tk()
root['bg']='MintCream'
t1=Text(root)
def newline():
    t=gettxt(t1)
    new=''
    for i,ch in enumerate(t):
        if ch=='\n' and t[i+1:i+3]!='- ':
            new+=' '
        else:
            new+=ch
    inst2(new)
w0=Label(root,text='Input:↑')
w1=Button(root,text="\\n",command=newline)
def brackets():
    t=gettxt(t1)
    new=''
    stop=0
    d={'[':']','(':')','{':'}',0:None}
    for ch in t:
        if ch in d:
            stop=ch
        elif ch==d[stop]:
            stop=0
        elif not stop:
            new+=ch
    inst2(new)
w2=Button(root,text='([{}])',command=brackets)
def linecount(event):
    count=lambda t:t.count('\n')+(t[-1]!='\n') if t else 0
    up=count(gettxt(t1))
    down=count(gettxt(t2))
    w3['text']=f'LineCount:↑{up}↓{down}'
root.bind('<KeyPress>', linecount)
w3=Label(root,text='LineCount')
def clear():
    deltxt(t1)
    deltxt(t2)
w4=Button(root,text='Clear',command=clear)
t2=Text(root)

ws=[w0,w1,w2,w3,w4]
t1.grid(row=0,column=0,columnspan=len(ws))
for i,w in enumerate(ws):
    w.configure(relief=FLAT,bg='SeaGreen1')
    w.grid(row=1,column=i,sticky=NS)
t2.grid(row=2,column=0,columnspan=len(ws))

def inst2(text):
    deltxt(t2)
    instxt(t2,text)
    linecount('<KeyPress>')
    try: ez.cpc(text)
    except UnicodeError: messagebox.showerror('Error','You need to copy it to your clipboard manually.')

root.mainloop()

这些是导入模块中使用的函数:

def copyToClipboard(text):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(text)
    win32clipboard.CloseClipboard()
## abbreviation
cpc=copyToClipboard

def gettxt(text):
    return text.get(1.0,'end').strip()

def deltxt(text):
    text.delete(1.0,'end')

def instxt(textwidget,text):
    textwidget.insert(1.0,text)

---更新---

我只是尝试将4个函数复制到simplifier.py而不是导入它们,它起作用了。但是,我也尝试导入其中任何一个,两个案例都失败了。在python shell中运行它们之后仍然没有错误。实际上,底部的3个函数是我的eztk模块中唯一的代码。当我单独导入eztk时,它仍然没有按预期工作,这意味着导入不应该有任何问题。

0 个答案:

没有答案