python3 tkinter 按钮弹出新窗口后 新窗口也有一个按钮继续点击弹出倒计时程序


import tkinter as tk
'''
from h23 import H23
'''

from test1 import NewWindow

__author__ = 'Evan'

class GuiSample(object):

    def __init__(self):
        self.root = tk.Tk()

        self.root.title('Countdown program')
        self.root.wm_attributes("-alpha", 1.0)
        self.root.wm_attributes("-topmost", True)

        self.build_button()

        self.add23_new_window.grid(row=0, column=0, sticky=tk.W)
        self.quit_button.grid(row=10, column=1, sticky=tk.W)
        self.set_gui_geometry(window=self.root)

        self.newwindow1 = NewWindow()

    def build_button(self):
        
        self.quit_button = tk.Button(self.root, text='Quit',command=self.tk_quit, bg='tomato')
        self.add23_new_window = tk.Button(self.root, text='23',command=self.new_window, bg='PeachPuff')
        

    def tk_quit(self):
        self.root.destroy()
        self.root.quit()

    def new_window(self):

        self.window = tk.Toplevel(self.root)
        self.window.title('23')
        self.window.wm_attributes("-topmost", True)
        self.set_gui_geometry(window=self.newwindow1.new_window(), x=1.6, y=3.5)

    def bind_window_move_events(self):

        def start_move(event):
            global x, y
            x = event.x
            y = event.y

        def stop_move(event):
            global x, y
            x = None
            y = None

        def on_motion(event):
            global x, y
            deltax = event.x - x
            deltay = event.y - y
            self.root.geometry("+%s+%s" % (self.root.winfo_x() + deltax, self.root.winfo_y() + deltay))
            self.root.update()

        self.root.bind("<ButtonPress-1>", start_move)  # 监听左键按下操作响应函数
        self.root.bind("<ButtonRelease-1>", stop_move)  # 监听左键松开操作响应函数
        self.root.bind("<B1-Motion>", on_motion)  # 监听鼠标移动操作响应函数

    @staticmethod
    def set_gui_geometry(window, x=2.5, y=4.0):

        window.update_idletasks()
        x_info = (window.winfo_screenwidth() - window.winfo_reqwidth()) / x
        y_info = (window.winfo_screenwidth() - window.winfo_reqwidth()) / y
        window.geometry('+%d+%d' % (x_info, y_info))

    @staticmethod
    def set_window_center(window, width=300, height=300):
        
        ws = window.winfo_screenwidth()
        hs = window.winfo_screenheight()
        x = (ws / 2) - (width / 2)
        y = (hs / 2) - (height / 2)
        window.geometry('%dx%d+%d+%d' % (width, height, x, y))



if __name__ == '__main__':
    guiSample = GuiSample()
    guiSample.root.mainloop()

这是链接的另一个文件

import tkinter as tk
'''
from h23 import H23
'''

__author__ = 'Evan'

class NewWindow(object):

    def __init__(self):
        self.root = tk.Tk()

        self.root.title('Countdown program')
        self.root.wm_attributes("-alpha", 1.0)
        self.root.wm_attributes("-topmost", True)

        self.build_button()

        self.add23_new_window.grid(row=0, column=0, sticky=tk.W)
        self.quit_button.grid(row=10, column=1, sticky=tk.W)
        self.set_gui_geometry(window=self.root)

    def build_button(self):
        
        self.quit_button = tk.Button(self.root, text='Quit',command=self.tk_quit, bg='tomato')
        self.add23_new_window = tk.Button(self.root, text='23',command=self.new_window, bg='PeachPuff')
        

    def tk_quit(self):
        self.root.destroy()
        self.root.quit()

    def new_window(self):

        self.window = tk.Toplevel(self.root)
        self.window.title('23')
        self.window.wm_attributes("-topmost", True)
        self.set_gui_geometry(window=self.window, x=1.6, y=3.5)

    def bind_window_move_events(self):

        def start_move(event):
            global x, y
            x = event.x
            y = event.y

        def stop_move(event):
            global x, y
            x = None
            y = None

        def on_motion(event):
            global x, y
            deltax = event.x - x
            deltay = event.y - y
            self.root.geometry("+%s+%s" % (self.root.winfo_x() + deltax, self.root.winfo_y() + deltay))
            self.root.update()

        self.root.bind("<ButtonPress-1>", start_move)  # 监听左键按下操作响应函数
        self.root.bind("<ButtonRelease-1>", stop_move)  # 监听左键松开操作响应函数
        self.root.bind("<B1-Motion>", on_motion)  # 监听鼠标移动操作响应函数

    @staticmethod
    def set_gui_geometry(window, x=2.5, y=4.0):

        window.update_idletasks()
        x_info = (window.winfo_screenwidth() - window.winfo_reqwidth()) / x
        y_info = (window.winfo_screenwidth() - window.winfo_reqwidth()) / y
        window.geometry('+%d+%d' % (x_info, y_info))

    @staticmethod
    def set_window_center(window, width=300, height=300):
        
        ws = window.winfo_screenwidth()
        hs = window.winfo_screenheight()
        x = (ws / 2) - (width / 2)
        y = (hs / 2) - (height / 2)
        window.geometry('%dx%d+%d+%d' % (width, height, x, y))



if __name__ == '__main__':
    guiSample = GuiSample()
    guiSample.root.mainloop()

这是倒计时文件

# Countdown using Tkinter 
from tkinter import *
import time
import tkinter.messagebox
 
class T19:
    def __init__(self,master):
        frame = Frame(master)
        frame.pack()
        self.hi_there = Button(frame, text="开始", command=self.start)
        self.hi_there.pack(side=LEFT)
        self.button = Button(frame, text="退出", fg="red", command=frame.quit)
        self.button.pack(side=LEFT)

    def start(self):

            self.countDown(int(19))
        
    def countDown(self,seconds):
        #倒计时程序
        lbl1.config(bg='yellow')
        lbl1.config(height=3, font=('times', 40, 'bold'))
        #设置显示倒计时高度、字体大小及字体颜色
        for k in range(seconds, 0, -1):
            if k == 30:
                print("\a")
            if k== 29:
                print("\a")
            if k== 28:
                print("\a")
            lbl1["text"] = k
            root.update()
            time.sleep(1)
        lbl1.config(bg='red')
        lbl1.config(fg='white')
        lbl1["text"] = "时间到!"

root = Tk()
root.title("Countdown")
root.geometry('380x300')
lbl1 = Label()
lbl1.pack(fill=BOTH, expand=1)
t19 = T19(root)
root.mainloop()



运行程序后并没有出现按钮,而是直接将倒计时文件一一弹出至结束,如何能够在一级窗口内出现按钮并点击后出现二级窗口,再次点击二级窗口的按钮弹出对应的倒计时程序。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。