Python中怎么自定义对话框
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,Python中怎么自定义对话框,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先在弹出菜单中增加修改文件名菜单项:def
千家信息网最后更新 2025年02月01日Python中怎么自定义对话框
Python中怎么自定义对话框,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
首先在弹出菜单中增加修改文件名菜单项:
def rbutton_down(event): iid = list_view.identify_row(event.y) if iid: if iid not in list_view.selection(): list_view.selection_set(iid) list_view.focus(iid) path, selections = selected_files() if path: menu = Menu(list_view, tearoff=False) menu.add_command(label='Open', command=open_current) if len(list(selections))==1: menu.add_command(label='Rename', command=rename_current) menu.add_command(label='Delete', command=delete_current) menu.post(event.x_root, event.y_root)
代码11行首先判断选中的文件个数,如果为1则增加【Rename】菜单项。当用户选择【Rename】时,系统会调用rename_current函数,其实现如下:
def rename_current(): path, selections = selected_files() if path: for fn in selections: # 构建顶层窗口作为对话框 rename_dlg = Toplevel(takefocus=True) # 指定窗口标题 rename_dlg.title('Rename') # 禁止窗口尺寸调整 rename_dlg.resizable(width=False, height=False) # 构建Frame对象以容纳Label和Entry对象 # 使用Frame可以分别调整Label/Entry区域和下面的按钮区域 fn_frame = Frame(rename_dlg) fn_frame.grid(row=0,column=0) Label(fn_frame, text='File Name:').grid(row=0, column=0) fn_var = StringVar() fn_var.set(fn) fn_entry = Entry(fn_frame, textvariable=fn_var) fn_entry.grid(row=0, column=1) # 构建Frame对象以容纳OK和Cancel按钮 btn_frame = Frame(rename_dlg) btn_frame.grid(row=1, column=0, sticky='e') # 通过labmda表达式传递构建按钮控件时的对话框控件,路径和文件名信息 # 修改后的文件名要在按下【OK】按钮是通过fn_var.get获取。 ok_btn = Button(btn_frame, text='OK', command=(lambda w=rename_dlg,p=path,s=fn: rename_ok(w,p,s,fn_var.get()))) ok_btn.grid(row=0, column=0) # 取消按钮直接销毁窗口对象 cancel_btn=Button(btn_frame, text='Cancel', command=rename_dlg.destroy) cancel_btn.grid(row=0, column=1) # 限定rename_dlg接收鼠标和键盘事件,这是实现模态对话框的关键。 rename_dlg.grab_set() # 使对话框相对于root窗口居中 center_window(rename_dlg, root) # 启动对话框主循环 rename_dlg.mainloop() # 销毁对话框窗口 rename_dlg.destroy() # 更新文件列表 select_node(None)
作者编写了详细的注释行,请结合代码自行理解。center_window函数的功能可以直接在其他场合使用,其实现如下:
def center_window(wnd, ref): wnd.update() width = wnd.winfo_width() height = wnd.winfo_height() if ref: ref_width = ref.winfo_width() ref_height = ref.winfo_height() x = ref.winfo_x() y = ref.winfo_y() size = '%dx%d+%d+%d' % (width, height, x + (ref_width - width) / 2, y+(ref_height - height) / 2) else: s_width = wnd.winfo_screenwidth() s_height = wnd.winfo_screenheight() size = '%dx%d+%d+%d' % (width, height, (s_width - width) / 2, (s_height - height) / 2) wnd.geometry(size)
如果指定了参照窗口对象ref则将窗口调整到ref的中心位置,否则调整到屏幕中心位置。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
对话框
对话
对象
按钮
文件
调整
代码
位置
函数
区域
控件
文件名
菜单
帮助
清楚
个数
事件
作者
关键
内容
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
济宁租房网络安全
服务器开发 书籍
密匙管理服务器名
php服务器教程视频
天津精英网络技术咨询成交价
霖星网络技术有限公司
数据库应该具有的安全机制
kk不是网络安全大赛吗
pfam数据库下载数据
中行亚欧互联网科技研究院
数据库安全的四大特性
数据库表不用外键如何关联
网络安全及信息化安全
网络技术设置pc
首推软件开发
重视网络技术
数据库读写分离有哪些方法
移动卡怎么提示无法连接服务器
根据经纬度,查询数据库
网络安全进校园科普剧寓教于乐
上海企业软件开发服务报价表
山东 网络安全和信息化
国内金融领域最大的软件开发公司
网络安全周情况汇报
网络安全绘画素材眼睛
垃圾分类系统数据库有哪些
git服务器文件管理
小学网络安全培训内容
软件开发其他收入
软件开发游戏开发网络工程