no判断 python yes_Python:Tkinter Askyesno方法打开一个空窗口

I use this to get yes/no from user but it opens an empty window:

from Tkinter import *

from tkMessageBox import *

if askyesno('Verify', 'Really quit?'):

print "ok"

And this empty window doesnt go away. How can I prevent this?

This won't work:

Tk().withdraw()

showinfo('OK', 'Select month')

print "line 677"

root = Tk()

root.title("Report month")

months = ["Jan","Feb","Mar"]

sel_list = []

print "line 682"

def get_sel():

sel_list.append(Lb1.curselection())

root.destroy()

def cancel():

root.destroy()

B = Button(root, text ="OK", command = get_sel)

C = Button(root, text ="Cancel", command = cancel)

Lb1 = Listbox(root, selectmode=SINGLE)

for i,j in enumerate(months):

Lb1.insert(i,j)

Lb1.pack()

B.pack()

C.pack()

print "line 702"

root.mainloop()

for i in sel_list[0]:

print months[int(i)]

return months[int(sel_list[0][0])]

解决方案

Create root window explicitly, then withdraw.

from Tkinter import *

from tkMessageBox import *

Tk().withdraw()

askyesno('Verify', 'Really quit?')

Not beautiful solution, but it works.

UPDATE

Do not create the second Tk window.

from Tkinter import *

from tkMessageBox import *

root = Tk()

root.withdraw()

showinfo('OK', 'Please choose')

root.deiconify()

# Do not create another Tk window. reuse root.

root.title("Report month")

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值