使用 Tkinter 创建 GUI 以获取域信息
在当今世界,许多企业严重依赖其在线业务。在建立网站或购买域名之前,必须尽可能多地获取有关您计划使用的域名的信息。它可能包括域所有者、服务器位置、IP 地址、WHOIS 详细信息等信息。因此,在下面的说明手册中,我们将指导您创建 GUI 以使用 Tkinter 获取域信息。
什么是 GUI?
GUI(图形用户界面)是一种以交互式窗口、按钮和菜单的形式向用户呈现数据的方式,而不是传统的命令行界面。它允许用户使用图片和图形而不是文本命令更舒适、更直观地与计算机交互。
为什么使用 Tkinter 进行 GUI?
Tkinter 是用于创建图形用户界面的最流行的库之一。它是 中的内置库,因此无需安装任何第三方库。它提供了一套全面的工具来创建 GUI,包括文本小部件、菜单栏和画布对象等。
使用 Tkinter 的主要优势是什么?
Tkinter 是一个用于创建 GUI 应用程序的库。以下是使用 Tkinter 的一些主要优势 -
它包含在其中 - Tkinter 包含在标准发行版中,这意味着它始终可用,而无需安装任何其他库。
跨平台兼容性 - Tkinter 适用于所有主流操作系统,包括 Windows、macOS 和 Linux。
易于学习 - Tkinter 具有简单直观的 API,这使得它易于学习和使用,特别是对于刚开始接触 GUI 编程的初学者而言。
可自定义的小部件 - Tkinter 提供了各种可自定义的小部件,例如按钮、标签、文本框、复选框、单选按钮、列表框等。这些小部件可以配置为适合您的特定应用程序要求。
轻松创建复杂布局 - Tkinter 提供了多个几何管理器(pack、grid 和 place),可帮助您灵活地在屏幕上排列小部件。
对用户界面的高级控制 - Tkinter 对用户界面的外观和感觉提供了高级控制,允许您自定义小部件的外观、字体、颜色等。
支持事件驱动编程 - Tkinter 基于事件驱动编程模型,这意味着它旨在响应用户事件,例如鼠标单击、按钮按下和键盘输入。这使得创建交互式应用程序变得容易。
总体而言,Tkinter 是一个多功能且易于使用的 GUI 工具包,可以帮助您以最小的努力创建具有专业外观的桌面应用程序。
先决条件
在深入了解创建 GUI 的细节之前,您应该对编程、面向对象编程 (OOP) 概念以及如何使用 Tkinter 模块有基本的了解。
推荐设置列表
pip install tkinter
预计用户可以访问任何独立 IDE,例如 VS-Code、PyCharm、Atom 或 Sublime text。
甚至可以使用在线编译器,例如 Kaggle.com、Google Cloud 平台或任何其他将做。
更新版本。在撰写本文时,我使用的是 3.10.9 版本。
了解 Jupyter 笔记本的使用。
虚拟环境的知识和应用将是有益的,但不是必需的。
创建 GUI 以获取域信息
步骤 1:导入必要的库
第一步是导入创建 GUI 应用程序所需的库。需要以下库 −
from tkinter import * import whois import socket
在这里,我们导入了 `tkinter` 库来创建图形用户界面,以及 `whois` 和 `socket` 库来获取域相关信息。
步骤 2:创建窗口
接下来,我们创建一个窗口框架,所有小部件都将放置在其中。以下代码将创建一个大小为 (500,400) 的窗口。
def __init__(self): self.window = Tk() self.window.geometry("500x400") self.window.title("Domain Information")
步骤 3:创建标签和文本框
创建窗口后,我们将创建标签、文本框和按钮,用于从用户那里获取域名。以下代码将创建一个带有文本"输入域名"的标签和一个用于从用户那里获取域名的文本框。
class DomainInfoGUI: def __init__(self): self.window = Tk() self.window.geometry("500x400") self.window.title("Domain Information") self.lbl_domain = Label(self.window, text="Enter Domain Name") self.lbl_domain.pack(pady=10) self.entry_domain = Entry(self.window, width=30) self.entry_domain.pack(pady=5) self.lbl_whois = None self.txt_whois = None self.lbl_dns = None self.txt_dns = None self.btn_whois = Button(self.window, text="Get WHOIS Information", command=self.get_whois_info) self.btn_whois.pack(pady=10) self.btn_dns = Button(self.window, text="Get DNS Information", command=self.get_dns_info) self.btn_dns.pack(pady=10) self.btn_clear = Button(self.window, text="Clear All", command=self.clear) self.btn_clear.pack(pady=10)
步骤 4:WHOIS 信息
现在,让我们创建一个按钮来获取有关域名的 WHOIS 信息。WHOIS 信息包含域名所有者、注册商、服务器位置等详细信息。
def get_whois_info(self): domain_name = self.entry_domain.get() w = whois.whois(domain_name) self.lbl_whois = Label(self.window, text="WHOIS information of "+ domain_name +": ") self.lbl_whois.pack(pady=10) self.txt_whois = Text(self.window, height=15, width=70) self.txt_whois.pack(pady=5) self.txt_whois.insert(END, str(w))
步骤 5:DNS 查找
接下来,我们将创建一个按钮,用于执行域的 DNS 查找。DNS 查找将返回域服务器的 IP 地址。
def get_dns_info(self): domain_name = self.entry_domain.get() ip_address = socket.gethostbyname(domain_name) self.lbl_dns = Label(self.window, text="DNS lookup result of "+ domain_name +": ") self.lbl_dns.pack(pady=10) self.txt_dns = Text(self.window, height=1, width=30) self.txt_dns.pack(pady=5) self.txt_dns.insert(END, ip_address)
第 6 步:清除按钮
最后,我们将创建一个按钮来清除所有标签、文本框和按钮。
def clear(self): if self.lbl_whois: self.lbl_whois.destroy() if self.txt_whois: self.txt_whois.destroy() if self.lbl_dns: self.lbl_dns.destroy() if self.txt_dns: self.txt_dns.destroy() gui = DomainInfoGUI() gui.window.mainloop()
最终代码、程序
from tkinter import * import whois import socket class DomainInfoGUI: def __init__(self): self.window = Tk() self.window.geometry("500x400") self.window.title("Domain Information") self.lbl_domain = Label(self.window, text="Enter Domain Name") self.lbl_domain.pack(pady=10) self.entry_domain = Entry(self.window, width=30) self.entry_domain.pack(pady=5) self.lbl_whois = None self.txt_whois = None self.lbl_dns = None self.txt_dns = None self.btn_whois = Button(self.window, text="Get WHOIS Information", command=self.get_whois_info) self.btn_whois.pack(pady=10) self.btn_dns = Button(self.window, text="Get DNS Information", command=self.get_dns_info) self.btn_dns.pack(pady=10) self.btn_clear = Button(self.window, text="Clear All", command=self.clear) self.btn_clear.pack(pady=10) def get_whois_info(self): domain_name = self.entry_domain.get() w = whois.whois(domain_name) self.lbl_whois = Label(self.window, text="WHOIS information of "+ domain_name +": ") self.lbl_whois.pack(pady=10) self.txt_whois = Text(self.window, height=15, width=70) self.txt_whois.pack(pady=5) self.txt_whois.insert(END, str(w)) def get_dns_info(self): domain_name = self.entry_domain.get() ip_address = socket.gethostbyname(domain_name) self.lbl_dns = Label(self.window, text="DNS lookup result of "+ domain_name +": ") self.lbl_dns.pack(pady=10) self.txt_dns = Text(self.window, height=1, width=30) self.txt_dns.pack(pady=5) self.txt_dns.insert(END, ip_address) def clear(self): if self.lbl_whois: self.lbl_whois.destroy() if self.txt_whois: self.txt_whois.destroy() if self.lbl_dns: self.lbl_dns.destroy() if self.txt_dns: self.txt_dns.destroy() gui = DomainInfoGUI() gui.window.mainloop()
该程序创建了三个按钮 - "获取 WHOIS 信息"、"获取 DNS 信息"和"全部清除"。单击"获取 WHOIS 信息"按钮时,它会调用 get_whois_info() 函数。同样,单击"获取 DNS 信息"按钮时,它会调用 get_dns_info() 函数。最后,单击"全部清除"按钮时,它会调用 clear() 函数。
输出

步骤 2:用户输入查询后,我们可以看到结果

此图片显示域可用性检查器的用户输入和输出。
结论
在本说明手册中,我们使用 Python 中的 Tkinter 库创建了一个 GUI 应用程序来获取域信息。我们使用 WHOIS 和 DNS 查找来获取域所有者、注册商、服务器位置和域的 IP 地址。有了它,最终用户无需具备技术知识就可以轻松获取与域相关的信息。