用Tkinter创建GUI以获取域名信息
在今天的世界中,许多企业严重依赖他们的在线存在。在建立网站或购买域名之前,了解您计划使用的域名的尽可能多的信息是必不可少的。这可能包括域所有者、服务器位置、IP地址、WHOIS详细信息等等。因此,在下面的指南中,我们将指导您在使用Tkinter时创建GUI以获取域名信息。
什么是GUI?
GUI(图形用户界面)是一种以交互式窗口、按钮和菜单的形式向用户呈现数据的方式,而不是传统的命令行界面。它允许用户通过使用图片和图形而不是文本命令更轻松直观地与计算机进行交互。
为什么使用Tkinter创建GUI?
Tkinter是创建图形用户界面最常用的库之一。它是Python的内置库,因此不需要安装任何第三方库。它提供了一整套用于创建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 notebook的知识。
-
了解和应用虚拟环境会很有益,但不是必需的。
创建获取域名信息的GUI
第一步:导入必要的库
首先要导入用于创建GUI应用程序所需的库。需要导入以下库:
from tkinter import *
import whois
import socket
在这里,我们导入了tkinter
库用于创建图形用户界面,以及whois
和socket
库用于获取与域名相关的信息。
第二步:创建窗口
接下来,我们创建一个窗口框架,将所有小部件放置在其中。下面的代码将创建一个大小为(500,400)的窗口。
def __init__(self):
self.window = Tk()
self.window.geometry("500x400")
self.window.title("Domain Information")
第三步:创建标签和文本框
创建窗口后,我们将创建标签、文本框和按钮以从用户获取域名。下面的代码将创建一个带有文本“输入域名”的标签和用于从用户获取域名的文本框。
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)
第四步: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))
第五步: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)
第六步:清除按钮
最后,我们将创建一个按钮,该按钮将清除所有标签、文本框和按钮。
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("域名信息")
self.lbl_domain = Label(self.window, text="输入域名")
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="获取WHOIS信息", command=self.get_whois_info)
self.btn_whois.pack(pady=10)
self.btn_dns = Button(self.window, text="获取DNS信息", command=self.get_dns_info)
self.btn_dns.pack(pady=10)
self.btn_clear = Button(self.window, text="清空所有", 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="域名 "+ domain_name +" 的WHOIS信息:")
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="域名 "+ domain_name +" 的DNS查询结果:")
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()函数。
输出
第二步:用户输入查询后,我们可以看到结果。
这张图片展示了域名可用性检查器的用户输入和输出。
结论
在本说明手册中,我们使用Python中的Tkinter库创建了一个GUI应用程序,以获取域名信息。我们使用WHOIS和DNS查询来获取域名所有者、注册机构、服务器位置和域名的IP地址。通过这种方式,终端用户可以轻松地获取与域名相关的信息,无需技术知识。