gpt4 book ai didi

Python 程序卡住

转载 作者:太空宇宙 更新时间:2023-11-03 11:35:19 26 4
gpt4 key购买 nike

我是 Python 的新手,我正在编写一个程序只是为了好玩。我的程序包含三个 .py 文件(比方说 a.py、b.py、c.py)。 a 将调用 b 或 c 中的函数,具体取决于用户的选项。完成第一轮后,它会询问用户是想继续还是退出程序。如果他们选择继续,它会再次询问是否应该运行 b 或 c。

我遇到的问题是,第一次,a 会完美地调用函数,它运行顺利,然后当我选择继续它再次调用函数时,它会完美地调用函数,它会进入函数, 但随后函数卡在了它的第一步。

程序没有终止,也没有给出错误。它接受 raw_input 变量,但不会继续。我想知道是否有某种方法可以强制它接受变量然后继续该过程(让它“解开”)。我已经尝试将 pass 放在下一行。那没有用。

以下是从请求开始到继续所采取的步骤:

Continue = tkMessageBox.askyesno('Cypher Program', 'I have completed the task'
+ '\nWould you like to do anything else?')

## This is in a.py;
if Continue == True:
cyp()
def cyp():
global root
root = Tk()

root.title("Cypher Program")
root['padx'] = 40
root['pady'] = 20

textFrame = Frame(root)


Label(root, text = 'What would you like to do?').pack(side = TOP)
widget1 = Button(root, text = 'Encrypt a file', command = encrypt)
widget1.pack(side = LEFT)

widget2 = Button(root, text = 'Decrypt a file', command = decrypt)
widget2.pack(side = RIGHT)

widget3 = Button(root, text = 'Quit', command = quitr)
widget3.pack(side = BOTTOM)
root.mainloop()

def encrypt():
root.destroy()
encrypt3.crypt()

##Then from there it goes to b.py;
def crypt():
entry('Enter a file to encrypt:', selectFile)

def entry(msg1, cmd):
global top
top = Toplevel() ##changed it to Toplevel

top.title("File Encrypion")
top['padx'] = 40
top['pady'] = 20

textFrame = Frame(top)

entryLabel = Label(textFrame)
entryLabel['text'] = msg1
entryLabel.pack(side = LEFT)

global entryWidget
entryWidget = Entry(textFrame)
entryWidget['width'] = 50
entryWidget.pack(side = LEFT)

textFrame.pack()

button = Button(top, text = "Submit", command = cmd)
button.pack()
button.bind('<Return>', cmd)

top.mainloop()

def selectFile():
if entryWidget.get().strip() == "":
tkMessageBox.showerror("File Encryption", "Enter a file!!")
else:
global enc
enc = entryWidget.get().strip() + '.txt'
top.destroy() ##gets stuck here

##This is the rest of crypt(). It never returns to the try statement
try:
view = open(enc)
except:
import sys
sys.exit(badfile())
text = ''

最佳答案

您需要重组您的代码以仅创建一次根窗口,并且仅调用一次 mainloop。 Tkinter 并非旨在能够在单个进程中多次创建和销毁根。

如果您需要多个窗口,请使用 Toplevel 命令创建额外的窗口。

关于Python 程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5196509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com