python d用法_python - 【:-D Tkinter 中 withdraw的正确使用姿势

问 题

如何实现点击button之后 显示一个新的窗口并且使button那个窗口直接消失

先贴上代码

#coding:utf-8

import Tkinter as tk

from Tkinter import *

import tkMessageBox

root = tk.Tk()

root.title('Test')

e = StringVar()

def callback():

#tkMessageBox.showinfo('title','hello world')

entry = Entry(root,textvariable = e)

e.set('请输入')

entry.pack()

def bnt():

Button(root,text = '确认使用',fg='red',bd = 2,width =28,

command = callback).pack()

root.withdraw()

bnt()

root.mainloop()

但比较蛋疼的是。。用了withdraw之后button窗口就直接匿了。。。点都点不了

解决方案

同shomy,很少用Tkinter,写了一个PyQt4版本的,你可以试试,亲测运行没问题

# coding:utf-8

from PyQt4.QtGui import *

# 点击后需要显示的窗口

class Window(QWidget):

def __init__(self, parent=None):

super(Window, self).__init__(parent)

self.resize(400, 200)

self.setWindowTitle("I am the new Window")

def handleTrigger(self):

# 如果当前为隐藏状态,则显示

if not self.isVisible():

self.show()

# 按钮

class Btn(QToolButton):

def __init__(self, parent=None):

super(Btn, self).__init__(parent)

self.resize(300, 100)

def handleClick(self):

# 如果当前为显示状态,则隐藏

if self.isVisible():

self.hide()

if __name__ == '__main__':

import sys

app = QApplication(sys.argv)

b = Btn()

w = Window()

# 窗口初始化为隐藏

w.hide()

# 点击时,触发新窗口的handleTrigger事件

b.clicked.connect(w.handleTrigger)

# 点击时,触发Button自己的handleClick事件

b.clicked.connect(b.handleClick)

b.show()

app.exec_()

PS: 如果没什么特殊的要求,推荐用PyQt4/PyQt5进行开发,原因:

1) 借助于Qt的强大类库,PyQt可以做很多事情,比如图形的绘制、XML解析、网络编程、数据库的读写等,也就是说PyQt不单单是一个GUI库,还包括非GUI的部分。

2) 借助于Qt Designer,你可以对图形界面部分进行拖拽式的开发,效率非常高。

3) 强大的社区支持,比如有一款Python IDE就是基于PyQt做的开发,这个在开源社区里的流行程度比Tkinter目前看起来是强大些的。

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值