鱼C论坛

 找回密码
 立即注册
查看: 3047|回复: 14

[已解决]又是tkinter库的问题...

[复制链接]
发表于 2022-10-7 12:31:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 元豪 于 2023-4-22 15:16 编辑

问:

如何让tkinter库在指定条件下转换窗口或弹出一个新的窗口(不是信息弹窗)。

如按下按钮会把界面清空,在出现新的界面或一个新的窗口。

(最好是转换界面)




最佳答案
2022-10-7 15:24:01
元豪 发表于 2022-10-7 15:15
对!wm_deiconify!
(焉了)咋用那?



试试这样吧,两个窗口都是一开始就创建了

运行过程也都隐藏不销毁,这样可能运行时候比较耗内存:
from tkinter import *

def isHidden():
    if root.state() == "normal":
        root.withdraw()
        new_win.wm_deiconify()
    else:
        root.wm_deiconify()
        new_win.withdraw()


root = Tk()
Label(root, text="Root Window").pack()
Button(root, text = "显示新窗口", command=isHidden).pack()


new_win = Toplevel(root)
new_win.withdraw()
Label(new_win, text="Top Window").pack()
Button(new_win, text = "返回主窗口", command=isHidden).pack()


mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-7 13:01:35 | 显示全部楼层
target.place(x = 9999, y = 9999)
这可以达到消失元素的效果
new_window = Tk()
这更简单,中间运行时也可以创建窗口呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-7 14:43:35 | 显示全部楼层
zhangjinxuan 发表于 2022-10-7 13:01
这可以达到消失元素的效果


把垃圾丢到床底下,垃圾就自动消失了,对吗?

删除(消失)某个组件对象,应该是用:widget.destroy()  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2022-10-7 15:01:57 | 显示全部楼层
有人吗??
大佬大佬......@Twilight6 @人造人 @不二如是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-7 15:12:26 | 显示全部楼层
元豪 发表于 2022-10-7 15:01
有人吗??
大佬大佬......@Twilight6 @人造人 @不二如是



.withdraw 可以隐藏根窗口,wm_deiconify 可以重新绘制根窗口

Toplevel 可以创建一个新的顶层窗口,此时你可以隐藏根窗口,如何想返回到根窗口时,在将 Toplevel 窗口销毁,或隐藏,重新绘制 根窗口

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-7 15:15:58 | 显示全部楼层
Twilight6 发表于 2022-10-7 15:12
.withdraw 可以隐藏根窗口,wm_deiconify 可以重新绘制根窗口

Toplevel 可以创建一个新的顶层窗口 ...

对!wm_deiconify!
(焉了)咋用那?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-7 15:24:01 | 显示全部楼层    本楼为最佳答案   
元豪 发表于 2022-10-7 15:15
对!wm_deiconify!
(焉了)咋用那?



试试这样吧,两个窗口都是一开始就创建了

运行过程也都隐藏不销毁,这样可能运行时候比较耗内存:
from tkinter import *

def isHidden():
    if root.state() == "normal":
        root.withdraw()
        new_win.wm_deiconify()
    else:
        root.wm_deiconify()
        new_win.withdraw()


root = Tk()
Label(root, text="Root Window").pack()
Button(root, text = "显示新窗口", command=isHidden).pack()


new_win = Toplevel(root)
new_win.withdraw()
Label(new_win, text="Top Window").pack()
Button(new_win, text = "返回主窗口", command=isHidden).pack()


mainloop()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-7 15:32:23 | 显示全部楼层
Twilight6 发表于 2022-10-7 15:24
试试这样吧,两个窗口都是一开始就创建了

运行过程也都隐藏不销毁,这样可能运行时候比较耗内存: ...

那怎么销毁呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-7 15:38:23 | 显示全部楼层
元豪 发表于 2022-10-7 15:32
那怎么销毁呢?



destroy() 就是销毁,其实如果你只是搞个小程序,用隐藏可以了,应该占不了多少内存

销毁后每次你重新点按钮,都要重新创建顶层窗口的各个组件,也蛮麻烦的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-7 15:48:06 | 显示全部楼层
Twilight6 发表于 2022-10-7 15:38
destroy() 就是销毁,其实如果你只是搞个小程序,用隐藏可以了,应该占不了多少内存

销毁后每次你 ...

谢啦,亲
不愧是互助平台统治者,啥都懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-7 17:02:57 | 显示全部楼层
元豪 发表于 2022-10-7 15:48
谢啦,亲
不愧是互助平台统治者,啥都懂



噗,不敢当,我只是搜索引擎用的比较熟练

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-7 19:59:23 | 显示全部楼层
Twilight6 发表于 2022-10-7 17:02
噗,不敢当,我只是搜索引擎用的比较熟练


那如果我想保留菜单呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-7 21:22:34 | 显示全部楼层
元豪 发表于 2022-10-7 19:59
那如果我想保留菜单呢?




什么意思捏?描述清晰点呗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-8 08:15:48 | 显示全部楼层
元豪 发表于 2022-10-7 19:59
那如果我想保留菜单呢?

你可以隐藏或者销毁其他不需要的组件,只保留菜单
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-8 18:32:26 | 显示全部楼层
Twilight6 发表于 2022-10-7 21:22
什么意思捏?描述清晰点呗

如保留部分按钮或组件该怎么改?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表