Skip to main content

Python 图形界面

Python Tkinter 开发图形界面程序

Python Tkinter 是 Python 的标准库,用于创建图形用户界面(GUI),提供简单直观的方式构建桌面应用程序。它包含丰富的控件和工具,可设计交互性强、用户友好的界面。下面是一个完整的示例。

程序代码需要再 IDE 里面运行,或者系统默认终端中执行,不能在通过ssh远程连接的终端中执行。

程序运行截图

数据展示

完整代码

import tkinter as tk
from tkinter import messagebox

class UserManagementSystem:
    def __init__(self, root):
        self.root = root
        self.root.title("Tkinter 客户端程序")
        self.root.geometry("400x300")

        # 创建菜单栏
        self.menu_bar = tk.Menu(self.root)
        self.file_menu = tk.Menu(self.menu_bar, tearoff=0)
        self.file_menu.add_command(label="退出", command=self.root.quit)
        self.menu_bar.add_cascade(label="文件", menu=self.file_menu)
        self.help_menu = tk.Menu(self.menu_bar, tearoff=0)
        self.help_menu.add_command(label="关于", command=self.show_about)
        self.menu_bar.add_cascade(label="帮助", menu=self.help_menu)
        self.root.config(menu=self.menu_bar)

        # 创建工具栏
        self.tool_bar = tk.Frame(self.root, bg="lightgray")
        self.tool_bar.pack(side=tk.TOP, fill=tk.X)
        self.submit_button = tk.Button(self.tool_bar, text="提交", command=self.submit_data)
        self.submit_button.pack(side=tk.LEFT, padx=5, pady=5)
        self.clear_button = tk.Button(self.tool_bar, text="清空", command=self.clear_form)
        self.clear_button.pack(side=tk.LEFT, padx=5, pady=5)

        # 创建表单输入区域
        self.form_frame = tk.Frame(self.root)
        self.form_frame.pack(pady=10)
        self.name_label = tk.Label(self.form_frame, text="姓名:")
        self.name_label.grid(row=0, column=0, sticky=tk.E)
        self.name_entry = tk.Entry(self.form_frame)
        self.name_entry.grid(row=0, column=1)
        self.age_label = tk.Label(self.form_frame, text="年龄:")
        self.age_label.grid(row=1, column=0, sticky=tk.E)
        self.age_entry = tk.Entry(self.form_frame)
        self.age_entry.grid(row=1, column=1)
        self.email_label = tk.Label(self.form_frame, text="邮箱:")
        self.email_label.grid(row=2, column=0, sticky=tk.E)
        self.email_entry = tk.Entry(self.form_frame)
        self.email_entry.grid(row=2, column=1)

        # 创建数据展示区域
        self.listbox = tk.Listbox(self.root)
        self.listbox.pack(pady=10, fill=tk.BOTH, expand=True)

        # 创建状态栏
        self.status_bar = tk.Label(self.root, text="就绪", bd=1, relief=tk.SUNKEN, anchor=tk.W)
        self.status_bar.pack(side=tk.BOTTOM, fill=tk.X)

    def submit_data(self):
        """提交数据并弹出确认对话框"""
        name = self.name_entry.get()
        age = self.age_entry.get()
        email = self.email_entry.get()
        if name and age and email:
            confirm = messagebox.askyesno("确认提交", f"确定要提交以下数据吗?\n\n姓名: {name}\n年龄: {age}\n邮箱: {email}")
            if confirm:
                self.listbox.insert(tk.END, f"{name} - {age} - {email}")
                self.clear_form()
                self.status_bar.config(text="数据已提交")
        else:
            messagebox.showwarning("警告", "所有字段都必须填写!")

    def clear_form(self):
        """清空表单输入"""
        self.name_entry.delete(0, tk.END)
        self.age_entry.delete(0, tk.END)
        self.email_entry.delete(0, tk.END)
        self.status_bar.config(text="表单已清空")

    def show_about(self):
        """显示关于对话框"""
        messagebox.showinfo("关于", "Tkinter 客户端程序\n版本 1.0")

if __name__ == "__main__":
    root = tk.Tk()
    app = UserManagementSystem(root)
    root.mainloop()