首页 论坛 置顶 使用Python制作GUI应用程序

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 作者
    帖子
  • #26042

    什么是tkinter?

    Tkinter 是Python的标准图形用户界面(GUI)库。

    • 内置:如果你使用的是默认的Python发行版,则无需单独安装 – 它随Python一起提供。
    • 包装器:它是一个薄的面向对象的包装器,围绕着Tcl/Tk,这是一个较旧但非常稳定的GUI工具包。
    • 目的:让你能够构建具有窗口、按钮、标签、菜单、文本框等的桌面应用程序。

    可以将其视为Python创建实际窗口的方式,而不仅仅是向终端打印信息。

    开始第一个窗口

    app.py

    import tkinter as tk
    
    # 创建主应用程序窗口
    root = tk.Tk()
    
    # 设置窗口标题
    root.title("我的第一个 Tkinter 窗口")
    
    # 设置窗口大小(宽 x 高)
    root.geometry("400x300")
    
    # 启动 Tkinter 事件循环
    root.mainloop()
    
    打开终端并运行:
    python app.py
    你将看到第一个小白窗口。

    第一个带有tkinter的窗口

    注意:我正在使用Python 3.12和Tcl-tk@8

    如果您的PC尚未准备好,请安装Tcl-tk。
    

    以下是在MacOS上安装它的方法(我使用的是Macbook M1)。

    brew uninstall tcl-tk
    brew install tcl-tk@8

    安装Python 3.12

    我使用pyenv来管理Python版本,您可以通过以下命令安装它:

    brew install pyenv
    

    现在,安装带有Tcl-tk的Python 3.12

    env 
      PATH="/opt/homebrew/opt/tcl-tk@8/bin:$PATH" 
      LDFLAGS="-L/opt/homebrew/opt/tcl-tk@8/lib" 
      CPPFLAGS="-I/opt/homebrew/opt/tcl-tk@8/include" 
    
    PKG_CONFIG_PATH="/opt/homebrew/opt/tcl-tk@8/lib/pkgconfig" 
    PYTHON_CONFIGURE_OPTS="--with-tcltk-includes='-I/opt/homebrew/opt/tcl-tk@8/include' --with-tcltk-libs='-L/opt/homebrew/opt/tcl-tk@8/lib -ltcl8.6 -ltk8.6'" 
    pyenv install 3.12.8

    添加第一个小部件

    import tkinter as tk
    
    # 创建主窗口
    
    root = tk.Tk()
    root.title("我的第一个 Tkinter 应用")
    root.geometry("400x250")
    
    # 添加一个标签
    label = tk.Label(root, text="请输入您的名字:", font=("Arial", 12))
    label.pack(pady=10)
    
    # 添加一个文本输入框
    
    entry = tk.Entry(root, font=("Arial", 12))
    entry.pack(pady=5)
    
    # 添加一个按钮
    def say_hello():
        name = entry.get()
        if name.strip():
            output_label.config(text=f"你好, {name}!")
    
    else:
            output_label.config(text="请输入您的名字。")
    
    button = tk.Button(root, text="提交", font=("Arial", 12), command=say_hello)
    button.pack(pady=10)
    
    # 输出标签
    
    output_label = tk.Label(root, text="", font=("Arial", 12), fg="blue")
    output_label.pack(pady=10)
    
    # 运行应用程序
    root.mainloop()
    

    这是我们的输出:

    一些初始小部件

    什么是 tkinter 小部件?

    在 Tkinter 中,小部件只是一个 GUI 元素——您应用窗口的构建块。

    可以将它们视为您在任何桌面应用程序中看到的控件:

    • 标签(文本)
    • 按钮
    • 文本框
    • 复选框
    • 单选按钮
    • 菜单
    • 框架(用于分组的容器)

    基本上:您在 Tkinter 窗口中放置的所有内容都是小部件。

    好的,现在让我们构建一个非常简单的用户资料编辑窗口。

    添加资料窗口

    profile.py

    import tkinter as tk
    from tkinter import ttk
    
    # 创建主窗口
    root = tk.Tk()
    root.title("资料窗口")
    root.geometry("400x500")
    root.configure(bg="#f5f5f5")
    
    # ---- 头部 ----
    
    header = tk.Label(root, text="用户资料", font=("Arial", 18, "bold"), bg="#f5f5f5")
    header.pack(pady=15)
    
    # ---- 个人头像(作为标签的占位符) ----
    
    profile_pic = tk.Label(root, text="👤", font=("Arial", 50), bg="#f5f5f5")
    profile_pic.pack(pady=10)
    
    # ---- 名字 ----
    
    name_label = tk.Label(root, text="姓名:", font=("Arial", 12), anchor="w", bg="#f5f5f5")
    name_label.pack(fill="x", padx=20)
    
    name_entry = tk.Entry(root, font=("Arial", 12))
    name_entry.pack(fill="x", padx=20, pady=5)
    
    # ---- 邮箱 ----
    
    email_label = tk.Label(root, text="电子邮件:", font=("Arial", 12), anchor="w", bg="#f5f5f5")
    email_label.pack(fill="x", padx=20)
    
    email_entry = tk.Entry(root, font=("Arial", 12))
    email_entry.pack(fill="x", padx=20, pady=5)
    
    # ---- 个人简介 ----
    
    bio_label = tk.Label(root, text="生物信息:", font=("Arial", 12), anchor="w", bg="#f5f5f5")
    bio_label.pack(fill="x", padx=20)
    
    bio_text = tk.Text(root, height=5, font=("Arial", 12))
    bio_text.pack(fill="x", padx=20, pady=5)
    
    # ---- 保存按钮 ----
    def save_profile():
        name = name_entry.get()
        email = email_entry.get()
    
        bio = bio_text.get("1.0", tk.END).strip()
        print("个人资料已保存:")
        print(f"姓名: {name}")
        print(f"电子邮件: {email}")
        print(f"个人简介: {bio}")
    
        messagebox.showinfo("已保存", "个人信息已保存!")
    
    save_button = ttk.Button(root, text="保存个人资料", command=save_profile)
    save_button.pack(pady=20)
    
    root.mainloop()
    
    我们来到了这里

    我们做了什么?我们制作了一个带有一些基本小部件的个人资料窗口:

    • 一个标题(“用户个人资料”)。
    • 一个占位符“个人资料图片”(现在只是一个Unicode 👤)。
    • 姓名、电子邮件和个人简介的字段。
    • 一个保存按钮,可以打印数据并显示消息框。

    结论

    对于已经拥有基于Python系统的开发者来说,只需要在其上添加一个简单的GUI层,Tkinter是理想的选择。

    它内置于Python中,因此没有额外的依赖问题。

    它与现有的Python代码无缝集成——您可以将脚本、函数或系统工具封装在一个带有按钮和输入的小窗口中。

    开发过程快速而简单;几行Tkinter代码就可以将命令行脚本转变为可用的桌面工具。

正在查看 1 个帖子:1-1 (共 1 个帖子)
  • 哎呀,回复话题必需登录。