为了账号安全,请及时绑定邮箱和手机立即绑定

显示 MessageBox 时出现 Python 新 TKinter 窗口

显示 MessageBox 时出现 Python 新 TKinter 窗口

一只甜甜圈 2021-08-14 15:36:01
显示消息框时,总会弹出一个新的 Tkinter 窗口。为什么会发生这种情况?我没有创建一个新窗口。如何摆脱窗户?下面是我的代码:def buy_product(): global listbox, buy_product_price_entryglobal s, ip,port, address,owners_ip, owners_port, usernameaddress = (ip,int(port))try:    item = listbox.get(listbox.curselection())            price = int(buy_product_price_entry.get())    highest_bid = int(item[5].replace('HIGHEST BID PRICE:', ''))    K = item[0].replace('START:', '')    end_time_str = item[1].replace('END:', '')    L = datetime.strptime(end_time_str , '%H:%M:%S')    current_time = datetime.strptime(datetime.now().strftime('%H:%M:%S'), '%H:%M:%S')    if(price>highest_bid):        if(current_time <= L):            try:                           A = int(item[2].replace('PRODUCT ID:', ''))                B = item[3].replace('PRODUCT NAME:','')                C = int(item[4].replace('BASE PRICE:', ''))                D = int(buy_product_price_entry.get())                E = username                F = item[7].replace('SELLER:','')                            G = item[8].replace('SELLER IP:','')                H = int(item[9].replace('SELLER PORT:', ''))                I = owners_ip                J = owners_port                                tup = (A,B,C,D,E,F,G,H,I,J,K,end_time_str)                s.sendto(str.encode(":::BUY_PRODUCT:::"  + json.dumps(tup)), address)                buy_product_price_entry.delete(0, END)            except:                print("Unable to buy the product. Please try again.")        else:            messagebox.showinfo("Information", "Its now " + current_time.strftime('%H:%M:%S') + ", bidding time is over. " + item[6].replace('BIDDER:', '') +  " has won the bidding")     else:        messagebox.showinfo("Information", "Inputted price is not greater than the highest bid price.")except:    messagebox.showinfo("Incomplete Input", "Please select first a product.") #Why does extra window occur?当我退出 Tk 窗口时,消息框也会消失,但是当我退出消息框时,窗口仍然存在。我必须手动关闭它。似乎 Tk 窗口是消息框的父级。
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

创建消息框时,除非已经有窗口,否则它会自动创建一个。为了解决这个问题,您可以.withdraw()在主窗口上使用来隐藏它,例如


from tkinter import *

from tkinter import messagebox


master = Tk()

master.withdraw()

messagebox.showinfo("Hi", "Hello World")


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 642 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信