使用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 Platform或任何其他編譯器。

  • 更新版本的Python。在撰寫本文時,我使用了3.10.9版本。

  • Jupyter Notebook的使用知識。

  • 虛擬環境的知識和應用將是有益的,但不是必需的。

建立獲取域名資訊的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地址。透過此方式,終端使用者可以輕鬆獲取與域名相關的的資訊,而無需具備技術知識。

更新於:2023年4月20日

311 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告