手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

跟我学Python GUI编程系列 - Tkinter(6)

[日期:2020-04-04] 来源:Linux公社  作者:醉落红尘 [字体: ]

跟我学Python GUI编程系列 - Tkinter(6)

在本系列教程中,我们将学习如何通过使用Tkinter包编写Python GUI示例来开发图形用户界面。

本文我们Linux环境:Ubuntu 20.04 LTS,Python版本为3.8.2。同样使用IDLE。

添加文件对话框(文件和目录选择器)

要创建文件对话框(文件选择器),可以使用如下所示的filedialog类:

from tkinter import filedialog

file = filedialog.askopenfilename()

选择文件并点击“打开”后,file变量将保存该文件的路径。

另外,如果想一次选择多个文件并打开,我们可以使用如下所示:

files = filedialog.askopenfilenames()

指定文件类型(过滤文件扩展名)

您可以使用filetypes参数为文件对话框指定文件类型,只需在元组中指定扩展名即可。

file = filedialog.askopenfilename(filetypes = (("Text files","*.txt"),("all files","*.*")))

您可以使用askdirectory方法请求目录:

dir = filedialog.askdirectory()

您可以通过使用initialdir来指定文件对话框的初始目录,如下所示:

from os import path

file = filedialog.askopenfilename(initialdir= path.dirname(__file__))

完整代码如下:

from tkinter import *
from tkinter import filedialog
import os

window = Tk()

window.title("欢迎使用linuxidc.com应用")

window.geometry('600x400')

def clicked():
    file = filedialog.askopenfilenames(initialdir=os.path.dirname(__file__))
btn = Button(window, text="点击这里", command=clicked)
btn.grid(column=0, row=0)
window.mainloop()

如下图:

跟我学Python GUI编程系列 - Tkinter(6)

简单吧!

添加菜单栏

要添加菜单栏,可以使用如下菜单类:

from tkinter import Menu

menu = Menu(window)

menu.add_command(label='文件')

window.config(menu=menu)

首先,我们创建一个菜单,然后添加我们的第一个标签,最后,将菜单分配给我们的窗口。

您可以使用add_cascade()函数将菜单项添加到任何菜单下,如下所示:

menu.add_cascade(label='文件', menu=new_item)

我们的代码如下所示:

from tkinter import *

from tkinter import Menu

window = Tk()

window.title("欢迎使用linuxidc.com应用")

window.geometry('600x400')

menu = Menu(window)

new_item = Menu(menu)

new_item.add_command(label='新建')

menu.add_cascade(label='文件', menu=new_item)

window.config(menu=menu)

window.mainloop()

如下所示:

跟我学Python GUI编程系列 - Tkinter(6) 

这样,您可以添加任意数量的菜单项。

from tkinter import *

from tkinter import Menu

window = Tk()

window.title("欢迎使用linuxidc.com应用")

window.geometry('600x400')

menu = Menu(window)

new_item = Menu(menu)

new_item.add_command(label='新建')

new_item.add_separator()

new_item.add_command(label='编辑')

new_item.add_separator()

new_item.add_command(label='保存')

menu.add_cascade(label='文件', menu=new_item)

window.config(menu=menu)

window.mainloop()

如下:

跟我学Python GUI编程系列 - Tkinter(6)

在这里,我们添加了另一个名为编辑与保存的菜单项,它带有一个菜单分隔符。

您可能会在开始时注意到一条虚线,如果单击该行,它将在一个单独的小窗口中显示菜单项。

你可以通过像如下这样禁用tearoff功能来禁用这个功能:

new_item = Menu(menu, tearoff=0)

只需将上面示例中的new_item替换为该示例,它将不再显示虚线。

再次提醒您可以通过指定command属性来键入当用户单击任何菜单项时可以使用的任何代码。

new_item.add_command(label='新建', command=clicked)

添加一个Notebook控件(选项卡控件)

要创建选项卡控件,有几个步骤。

  • 首先,我们使用Notebook类创建一个选项卡控件。
  • 使用Frame类创建一个选项卡。
  • 将该选项卡添加到选项卡控件。
  • 打包选项卡控件,使其在窗口中可见。

from tkinter import *

from tkinter import ttk

window = Tk()

window.title("欢迎使用linuxidc.com应用")

window.geometry('600x400')

tab_control = ttk.Notebook(window)

tab1 = ttk.Frame(tab_control)

tab_control.add(tab1, text='文件')

tab_control.pack(expand=1, fill='both')

window.mainloop()

如下:

跟我学Python GUI编程系列 - Tkinter(6)

通过这种方式,您可以添加任意多的选项卡。

将组件添加到Notebook

创建选项卡之后,可以通过将父属性分配给所需的选项卡,将组件放置在这些选项卡中。

from tkinter import *

from tkinter import ttk

window = Tk()

window.title("欢迎使用linuxidc.com应用")

window.geometry('600x400')

tab_control = ttk.Notebook(window)

tab1 = ttk.Frame(tab_control)

tab2 = ttk.Frame(tab_control)

tab_control.add(tab1, text='文件')

tab_control.add(tab2, text='打印')

lbl1 = Label(tab1, text= '标签1-Linux公社')

lbl1.grid(column=0, row=0)

lbl2 = Label(tab2, text= '标签2-打印www.linuxidc.com')

lbl2.grid(column=0, row=0)

tab_control.pack(expand=1, fill='both')

window.mainloop()

跟我学Python GUI编程系列 - Tkinter(6)

为小部件添加间距(填充)

您可以使用padx和pady属性为控件添加填充,以使其看起来井井有条。

只需将padx和pady传递给任何小部件并为其提供值即可。

lbl1 = Label(tab1, text= '标签1', padx=5, pady=5)

就这么简单!

在本教程中,我们看到了许多使用Tkinter库的Python GUI示例,并且看到了使用它开发图形界面的难易程度。

本教程涵盖了Python GUI开发的主要方面,但并非全部。 没有教程或书籍可以涵盖所有内容。

我希望您发现这些示例有用。 

OK,本系列到此结束,就这样。

跟我学Python GUI编程系列  https://www.linuxidc.com/search.aspx?where=nkey&keyword=65442 】

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2020-04/162819.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款