大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Python tkinterpack基础入门,希望您对编程的造诣更进一步.
如果你想学习Python GUI编程,那么Tkinter是一个非常好的选择。Tkinter作为Python内置的GUI工具包,其简易性、可移植性和可扩展性都是极为出色的。
在这篇文章中,我们将介绍Python tkinterpack的基础知识。首先,我们将讲解如何安装Tkinter并编写你的第一个GUI应用程序。接着,我们将深入理解Tkinter的基础知识,例如Frame、Label、Button等。最后,我们将讨论如何构建更为复杂的GUI应用程序。
一、安装和第一个应用程序
安装
首先,让我们来安装Tkinter。在Python2.x中,Tkinter已经被默认安装。对于Python3.x,如果你没有安装Tkinter,你需要执行以下步骤:
sudo apt-get install python3-tk
或者
sudo yum install python3-tkinter
第一个应用程序
让我们快速地写一个程序,用它来了解Tkinter是如何工作的。这个程序将在屏幕中央显示一个按钮,点击它将会弹出一个问候对话框。
import tkinter as tk from tkinter import messagebox class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.hello_button = tk.Button(self) self.hello_button["text"] = "Click me!" self.hello_button["command"] = self.say_hello self.hello_button.pack(side="top") def say_hello(self): messagebox.showinfo("Hello!", "Hello World") root = tk.Tk() app = Application(master=root) app.mainloop()
在上述代码中,我们首先导入Tkinter和messagebox模块。我们创建了一个Application类,它是一个Frame,用来容纳作为自己的子组件的所有小部件。在构造函数中,我们调用了Frame的构造函数,并将self.master设置为主Tkinter对象。然后我们调用了create_widgets()方法,该方法将创建我们唯一的小部件——一个Button。这个Button有一个命令(command)属性,将其设置为say_hello方法,这个方法将弹出一个messagebox,显示问候语。
最后一行创建了主Tkinter对象,并启动事件循环。
二、基本的Tkinter小部件
下面我们将介绍基本的Tkinter小部件,它们可用于创建GUI应用程序。这些小部件包括Frame、Label、Button、Entry、Checkbutton、Radiobutton、Listbox、Scrollbar、Menu和Canvas。
Frame
Frame通常被用作容器,来容纳其他的小部件。它本身不显示任何东西,但是可以调整其他小部件的位置和大小。
import tkinter as tk root = tk.Tk() frame1 = tk.Frame(root) frame1.pack() frame2 = tk.Frame(root) frame2.pack(side="bottom") tk.Button(frame1, text="Button1", fg="red").pack(side="left") tk.Button(frame1, text="Button2", fg="blue").pack(side="left") tk.Button(frame2, text="Button3", fg="green").pack(side="bottom") root.mainloop()
上述代码中,我们创建了两个Frame,frame1位于顶部,frame2位于底部。我们在frame1中放置了两个Button,它们分别位于frame1左侧,button3位于frame2中,位于底部。
Label
Label用于在GUI中显示文本或图像。
import tkinter as tk root = tk.Tk() label = tk.Label(root, text="Hello World") label.pack() root.mainloop()
上述代码中,我们创建了一个Label,该Label包含一个文本”Hello World”。将Label添加到主Tkinter对象并运行程序。
Button
Button允许用户单击它来触发某些操作。
import tkinter as tk root = tk.Tk() def say_hello(): print("Hello World") button = tk.Button(root, text="Click me!", command=say_hello) button.pack() root.mainloop()
上述代码中,我们定义了一个say_hello函数,当用户单击Button时,该函数将被调用。我们创建一个Button,并将其命令设置为say_hello函数。将Button添加到主Tkinter对象并运行程序。
Entry
Entry用于输入文本信息。
import tkinter as tk root = tk.Tk() entry = tk.Entry(root) entry.pack() root.mainloop()
上述代码中,我们创建了一个Entry,用于用户输入文本。将Entry添加到主Tkinter对象并运行程序。
Checkbutton
Checkbutton用于启用/禁用选项。
import tkinter as tk root = tk.Tk() var1 = tk.BooleanVar() var2 = tk.BooleanVar() checkbutton1 = tk.Checkbutton(root, text="Option1", variable=var1) checkbutton2 = tk.Checkbutton(root, text="Option2", variable=var2) checkbutton1.pack() checkbutton2.pack() root.mainloop()
上述代码中,我们创建了两个Checkbutton,用于启用/禁用选项。我们定义了两个BooleanVar变量来存储选项是否被选中。将Checkbutton添加到主Tkinter对象并运行程序。
Radiobutton
Radiobutton用于从多个选项中选择一个。
import tkinter as tk root = tk.Tk() var = tk.StringVar() var.set("Option1") radiobutton1 = tk.Radiobutton(root, text="Option1", variable=var, value="Option1") radiobutton2 = tk.Radiobutton(root, text="Option2", variable=var, value="Option2") radiobutton3 = tk.Radiobutton(root, text="Option3", variable=var, value="Option3") radiobutton1.pack() radiobutton2.pack() radiobutton3.pack() root.mainloop()
在上述代码中,我们创建了三个Radiobutton,用于从多个选项中选择一个。我们定义了一个StringVar变量来存储选项。将Radiobutton添加到主Tkinter对象并运行程序。
Listbox
Listbox用于显示多个可选项。
import tkinter as tk root = tk.Tk() listbox = tk.Listbox(root) listbox.insert(1, "Option1") listbox.insert(2, "Option2") listbox.insert(3, "Option3") listbox.pack() root.mainloop()
上述代码中,我们创建了一个Listbox,用于显示多个可选项。我们使用insert()方法向Listbox中添加项目。将Listbox添加到主Tkinter对象并运行程序。
Scrollbar
Scrollbar用于支持滚动功能的小部件。
import tkinter as tk root = tk.Tk() listbox = tk.Listbox(root) listbox.insert(1, "Option1") listbox.insert(2, "Option2") listbox.insert(3, "Option3") scrollbar = tk.Scrollbar(root) scrollbar.pack(side="right", fill="y") listbox.pack(side="left", fill="both") scrollbar.config(command=listbox.yview) listbox.config(yscrollcommand=scrollbar.set) root.mainloop()
在上述代码中,我们创建了一个Listbox和一个Scrollbar。将Scrollbar添加到主Tkinter对象,并为其设置command,以便滚动Listbox中的项。将Listbox添加到主Tkinter对象并使用yscrollcommand属性并设置其为Scrollbar的set方法。运行程序。
Menu
Menu用于创建菜单。
import tkinter as tk root = tk.Tk() menu = tk.Menu(root) root.config(menu=menu) file_menu = tk.Menu(menu) menu.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="Open...", command=lambda: print("Open File")) file_menu.add_command(label="Exit", command=root.quit) root.mainloop()
上述代码中,我们创建了一个菜单及其子菜单。将菜单添加到主Tkinter对象,并运行程序。点击菜单中的项应该会执行相应的命令。
Canvas
Canvas用于绘制图形。
import tkinter as tk root = tk.Tk() canvas = tk.Canvas(root, width=200, height=200) canvas.pack() canvas.create_rectangle(50, 50, 150, 150, fill="blue") canvas.create_line(0, 0, 200, 200) root.mainloop()
在上述代码中,我们创建了一个Canvas,并在其上创建了一个矩形和一条线段。将Canvas添加到主Tkinter对象并运行程序。
三、构建复杂的GUI应用程序
在本节中,我们将介绍如何构建复杂的GUI应用程序。我们将使用上文介绍的所有小部件,并学习如何将它们组合成一个完整的应用程序。
样例
我们将构建一个简单的应用程序,其中包含一个文本框、一个按钮和一个标签。当用户单击按钮时,我们将获取文本框中的文本,并将其显示在标签中。
import tkinter as tk class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.input_frame = tk.Frame(self) self.input_frame.pack(side="top") self.input_label = tk.Label(self.input_frame, text="Input:") self.input_label.pack(side="left") self.input_entry = tk.Entry(self.input_frame) self.input_entry.pack(side="left") self.button_frame = tk.Frame(self) self.button_frame.pack(side="top") self.submit_button = tk.Button(self.button_frame, text="Submit", command=self.submit) self.submit_button.pack(side="left") self.quit_button = tk.Button(self.button_frame, text="Quit", command=self.master.quit) self.quit_button.pack(side="left") self.output_frame = tk.Frame(self) self.output_frame.pack(side="top") self.output_label = tk.Label(self.output_frame, text="Output:") self.output_label.pack(side="left") self.output_text = tk.StringVar() self.output_entry = tk.Entry(self.output_frame, textvariable=self.output_text) self.output_entry.pack(side="left") def submit(self): text = self.input_entry.get() self.output_text.set(text) root = tk.Tk() app = Application(master=root) app.mainloop()
在上述代码中,我们创建了一个Application类,用作Frame的子组件容器。我们将其分为三个Frame,分别是:输入、按钮以及输出。我们在输入Frame中添加了一个Label和一个Entry,用于用户输入文本。我们在按钮Frame中添加了两个Button,一个提交用户输入,另一个退出程序。在输出Frame中添加了一个Label和一个Entry,用于显示提交的文本。
在submit()方法中,我们获取了用户输入的文本,并将其设置到输出Entry中。
运行程序,你将看到一个包含输入框、按钮和输出框的窗口。在输入框中输入文本并单击按钮,你将在输出框中看到相同的文本。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/20598.html