python程序运行的先后问题

img


如图,为什么主程序运行完之后,主窗口中的按钮中显示的是skquestion,而不是askokcancel?
它最开始给n赋值0,那么cmd函数最先执行哪个方式?不是有个n=n+1?我感觉好像是先执行n==1那一项,但又好像不对。请分析一下这个程序的执行先后顺序。

顺序确实是按照书中 cancel->question->yesno->error->showinfo 的,不过程序展现出来的并不一定与能让你看出来他的顺序。
他的执行流程是这样的:
1.弹出第一个消息框(cancel), 显示可以弹出第二个消息框(question)的按钮
2.点击按钮后,弹出第二个消息框(question),显示可以弹出第三个消息框(yesno)的按钮
所以他的的逻辑顺序是先 cancel 后 question 的,只不过 体现在消息框上,而第一个消息框不好看出来 他是cancel,因为他不像question消息框那样有按钮可以按方便查看,所以你可以理解, 代码实际逻辑的第一个 是cancel,但是显示给人(此处的人指未知运行逻辑的人)看的时候是question 先出来导致相当于数组错误的从1开始数,而实际上,数组是从第0个下标开始数的,希望你可以理解。

你编一下代码就知道运行结果了,他这个截的图不一定是最开始生成的图。

【以下回答由 GPT 生成】

程序的执行先后顺序如下:

  1. 首先,全局变量n被初始化为0。

  2. 然后,定义了一个cmd函数,其中使用了global n来声明n是全局变量。在cmd函数中,根据n的值的不同,打印不同的字符串。

  3. 接下来,调用cmd函数,此时n的值为0,所以打印输出"s"。

  4. 紧接着,导入了tkinter模块以及askokcancel函数。

  5. 创建了一个Tk对象,即主窗口root。

  6. 创建了一个按钮button,按钮的文本内容是askokcancel("Question", "Do you want to continue?")返回的值。注意,这里不是直接将值赋给text属性,而是调用了askokcancel函数,将返回的字符串作为按钮的文本。

  7. 将按钮添加到主窗口中。

  8. 最后,进入主循环root.mainloop(),程序开始运行主窗口。

由于主程序一开始就调用了cmd函数,并且该函数内部打印了"s",所以在创建按钮之前,控制台会先输出"s"。而在按钮创建时,调用了askokcancel函数来获取按钮的文本,这里会弹出一个窗口来询问用户是否继续,用户点击"ok"或"cancel"后才会返回相应的字符串。所以在这里,输出的按钮文本是"squestion"而不是"askokcancel"。

综上所述,主程序运行完之后,主窗口中的按钮显示的是"squestion"而不是"askokcancel"。希望以上解释能解决您的问题,如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^