python羊 发表于 2020-6-8 15:19:55

如何让 Tk 弹窗在函数之前显示。

达到的效果:
        第一步,先弹出弹窗。
        然后在执行函数。

感谢,感谢


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

from tkinter import*
import time

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

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

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

gia()

root.mainloop()
——————————————————————————————————————————

Twilight6 发表于 2020-6-8 15:19:56

python羊 发表于 2020-6-8 16:05
越来越难系列

Python 就是这样 入门容易 精通登天啊{:10_266:}

Twilight6 发表于 2020-6-8 15:27:38

什么意思 你是想先弹窗 显示 第一步,弹出窗口 然后在显示 第二步,执行函数?

liuzhengyuan 发表于 2020-6-8 15:28:23

from tkinter import*
import time

def gia():
    print('第二步,执行函数')
   
root = Tk()

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

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

root.mainloop()

gia()

Twilight6 发表于 2020-6-8 15:33:05

from tkinter import messagebox as g
from tkinter import *

root = Tk()

var_r_wa = StringVar()

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

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

gia()

mainloop()

python羊 发表于 2020-6-8 15:38:08

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

对的,我想要 弹窗在 函数之前显示,好像各种方法都不行。

python羊 发表于 2020-6-8 15:38:45

liuzhengyuan 发表于 2020-6-8 15:28


感谢回复。我想要弹窗一直保持。

Twilight6 发表于 2020-6-8 15:39:51

python羊 发表于 2020-6-8 15:38
感谢回复。我想要弹窗一直保持。

time 模块使用会让Tkinter 窗口卡顿到sleep结束

python羊 发表于 2020-6-8 15:42:24

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

感谢大哥,下面的代码,我试运行了。但是还是需要进行    确认   。请问是否可以不用 操作,直接,先弹窗在 打印def gia()的值。再次感谢您。

python羊 发表于 2020-6-8 15:57:50

Twilight6 发表于 2020-6-8 15:39
time 模块使用会让Tkinter 窗口卡顿到sleep结束

是的,阻塞了。可能要用到异步才行,我还没学会异步啊{:5_104:}。

Twilight6 发表于 2020-6-8 16:01:10

python羊 发表于 2020-6-8 15:57
是的,阻塞了。可能要用到异步才行,我还没学会异步啊。

哈哈 那就慢慢来学学多线程{:10_256:}

python羊 发表于 2020-6-8 16:05:59

Twilight6 发表于 2020-6-8 16:01
哈哈 那就慢慢来学学多线程

越来越难系列

python羊 发表于 2020-6-9 16:08:54

经过一番学习。使用多线程可以解决,线程被阻塞时,top弹窗 卡住的问题。
解决代码如下:
from tkinter import*
import time
import threading

root = Tk()
def gia():
    time.sleep(3)
    print('第二步,执行函数')
   
def top():   
    var_r_wa = StringVar()
    var_r_wa.set('第一步,弹出窗口')

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

   
def main():
    added_thread = threading.Thread(target=gia)
    added_thread.start()
    top()
   
main()

root.mainloop()

临时号 发表于 2020-7-22 18:55:44

úgiaroot.mainloop()

nahongyan1997 发表于 2020-7-23 14:11:26

推荐弹窗使用子线程执行,函数是用主线程执行,避免主线程关闭时子线程是否关闭未知。

python羊 发表于 2020-8-13 09:02:47

nahongyan1997 发表于 2020-7-23 14:11
推荐弹窗使用子线程执行,函数是用主线程执行,避免主线程关闭时子线程是否关闭未知。

感谢
页: [1]
查看完整版本: 如何让 Tk 弹窗在函数之前显示。