首页 > 解决方案 > 触发创建其他 tkinter 窗口

问题描述

我正在尝试创建一个 python 脚本,每次发生某个事件时都会触发一个 tkinter 窗口。python 脚本将有一个 while true 循环,并且在循环期间 tkinter 事件可能发生也可能不发生(if-else 块)。现在实际的循环部分还没有完成,所以我目前正在测试 tkinter 部分,但我似乎不能打开超过 tkinter 窗口。

下面是我正在使用的测试脚本。

from tkinter import *
from sys import exit
import os


onetwo = "C:/Users/I/Downloads/Transfer_Out_1016_Outlook.txt"

def popupError(s):
    popupRoot = Tk()
    ##popupRoot.after(20000, exit)
    popupButton = Button(popupRoot, text = s, font = ("Verdana", 12), bg = "yellow", command = lambda: os.system(onetwo))
    popupButton.pack()
    popupRoot.geometry('400x50+700+500')
    popupRoot.mainloop()


popupError("HelloWORLD")


def popupTwo(s):
    popupRoot = Tk()
    ##popupRoot.after(20000, exit)
    popupButton = Button(popupRoot, text = s, font = ("Verdana", 12), bg = "yellow", command = lambda: os.system(onetwo))
    popupButton.pack()
    popupRoot.geometry('400x50+700+500')
    popupRoot.mainloop()


popupTwo("HEWWWWWEWEWKOO")

对于缺少一段实际代码,我深表歉意,但鉴于整个 python 脚本其他部分的开发状态,这是我现在能做的最好的事情。

请注意,在单个循环会话中可能会多次触发 tkinter 窗口。

如果需要任何其他细节,我会尽力添加更多。

标签: pythontkinter

解决方案


以下是您可以执行的操作:

from tkinter import *

def popup(winName):
    newWin = Toplevel()
    btn2 = Button(newWin, text=winName)
    btn2.pack()

root = Tk()

btn = Button(root, text=“Popup”, command=lambda: popup(“text”))
btn.pack()

root.mainloop()

推荐阅读