鱼C论坛

 找回密码
 立即注册
查看: 2318|回复: 16

[已解决]如何让 Tk 弹窗在函数之前显示。

[复制链接]
发表于 2020-6-8 15:19:55 | 显示全部楼层 |阅读模式
5鱼币
达到的效果:
        第一步,先弹出弹窗。
        然后在执行函数。

感谢,感谢


源代码:
——————————————————————————————————

  1. from tkinter import*
  2. import time

  3. def gia():
  4.     print('第二步,执行函数')
  5.     time.sleep(3)
  6.    
  7. root = Tk()

  8. var_r_wa = StringVar()
  9. var_r_wa.set('第一步,弹出窗口')

  10. top_W = Toplevel(root)
  11. label_r_wa =Label(top_W,textvariable= var_r_wa)
  12. label_r_wa.grid()

  13. gia()

  14. root.mainloop()
复制代码

——————————————————————————————————————————
最佳答案
2020-6-8 15:19:56


Python 就是这样 入门容易 精通登天啊

最佳答案

查看完整内容

Python 就是这样 入门容易 精通登天啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 15:19:56 | 显示全部楼层    本楼为最佳答案   


Python 就是这样 入门容易 精通登天啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 15:27:38 | 显示全部楼层
什么意思 你是想先弹窗 显示 第一步,弹出窗口 然后在显示 第二步,执行函数?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 15:28:23 | 显示全部楼层
  1. from tkinter import*
  2. import time

  3. def gia():
  4.     print('第二步,执行函数')
  5.    
  6. root = Tk()

  7. var_r_wa = StringVar()
  8. var_r_wa.set('第一步,弹出窗口')

  9. top_W = Toplevel(root)
  10. label_r_wa =Label(top_W,textvariable= var_r_wa)
  11. label_r_wa.grid()

  12. root.mainloop()

  13. gia()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 15:33:05 | 显示全部楼层
  1. from tkinter import messagebox as g
  2. from tkinter import *

  3. root = Tk()

  4. var_r_wa = StringVar()

  5. def gia():
  6.     top_W = Toplevel(root)
  7.     var_r_wa.set('第二步,执行函数')
  8.     print('第二步,执行函数')
  9.     label_r_wa = Label(top_W, textvariable=var_r_wa)
  10.     label_r_wa.grid()

  11. g.showinfo(message='第一步,弹出窗口')

  12. gia()

  13. mainloop()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-8 15:38:08 | 显示全部楼层
Twilight6 发表于 2020-6-8 15:27
什么意思 你是想先弹窗 显示 第一步,弹出窗口 然后在显示 第二步,执行函数?

对的,我想要 弹窗在 函数之前显示,好像各种方法都不行。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-8 15:38:45 | 显示全部楼层

感谢回复。我想要弹窗一直保持。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 15:39:51 | 显示全部楼层
python羊 发表于 2020-6-8 15:38
感谢回复。我想要弹窗一直保持。

time 模块使用会让Tkinter 窗口卡顿到sleep结束
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-8 15:42:24 | 显示全部楼层
Twilight6 发表于 2020-6-8 15:27
什么意思 你是想先弹窗 显示 第一步,弹出窗口 然后在显示 第二步,执行函数?

感谢大哥,下面的代码,我试运行了。但是还是需要进行    确认   。请问是否可以不用 操作,直接,先弹窗  在 打印  def gia()的值。再次感谢您。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-8 15:57:50 | 显示全部楼层
Twilight6 发表于 2020-6-8 15:39
time 模块使用会让Tkinter 窗口卡顿到sleep结束

是的,阻塞了。可能要用到异步才行,我还没学会异步啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-8 16:01:10 | 显示全部楼层
python羊 发表于 2020-6-8 15:57
是的,阻塞了。可能要用到异步才行,我还没学会异步啊。

哈哈 那就慢慢来  学学多线程
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-8 16:05:59 | 显示全部楼层
Twilight6 发表于 2020-6-8 16:01
哈哈 那就慢慢来  学学多线程

越来越难系列
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-9 16:08:54 | 显示全部楼层
经过一番学习。使用多线程可以解决,线程被阻塞时,top弹窗 卡住的问题。
解决代码如下:

  1. from tkinter import*
  2. import time
  3. import threading

  4. root = Tk()
  5. def gia():
  6.     time.sleep(3)
  7.     print('第二步,执行函数')
  8.    
  9. def top():   
  10.     var_r_wa = StringVar()
  11.     var_r_wa.set('第一步,弹出窗口')

  12.     top_W = Toplevel(root)
  13.     label_r_wa = Label(top_W,textvariable= var_r_wa).grid()

  14.    
  15. def main():
  16.     added_thread = threading.Thread(target=gia)
  17.     added_thread.start()
  18.     top()
  19.    
  20. main()
  21.   
  22. root.mainloop()
复制代码

点评

问题解决了,那就设置下【最佳答案】呗~  发表于 2020-7-23 19:11
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-22 18:55:44 From FishC Mobile | 显示全部楼层
úgiaroot.mainloop()

评分

参与人数 1鱼币 +2 收起 理由
python羊 + 2

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-7-23 14:11:26 | 显示全部楼层
推荐弹窗使用子线程执行,函数是用主线程执行,避免主线程关闭时子线程是否关闭未知。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-13 09:02:47 | 显示全部楼层
nahongyan1997 发表于 2020-7-23 14:11
推荐弹窗使用子线程执行,函数是用主线程执行,避免主线程关闭时子线程是否关闭未知。

感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-25 15:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表