<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          肝了一夜!我用Python打造了一款武林外傳QQ聊天室

          共 2090字,需瀏覽 5分鐘

           ·

          2021-01-28 17:12

          公眾號?“菜鳥學(xué)Python

          439篇原創(chuàng),設(shè)為 “星標(biāo)”,一起學(xué)Python!



          大家在平時的學(xué)習(xí)或者是生活中,想必都少不了群聊,無論是微信還是QQ,都有群聊的內(nèi)容,有的時候想打造一個小團(tuán)體專屬的聊天室,不被服務(wù)器記錄信息,這樣的小工具其實Python就可以輕松辦到,大概100-200行代碼即可完成。


          今天小編就帶領(lǐng)大家利用Python來打造一款局域網(wǎng)下的聊天室,小編是武林外傳的鐵粉,干脆用武林外傳的人物來打造一個虛擬的聊天室,給大家展示一下。


          01.原理介紹

          今天用到的庫大部分都是Python的內(nèi)置庫,唯一一個需要額外安裝的庫是Pillow庫。安裝的方式也非常的簡單,只要運行pip3 install Pillow即可完成安裝,用的Python的版本是Python3.7版本。

          局域網(wǎng)下,大家可以簡單的理解為只要大家所使用的網(wǎng)都是基于一個 路由器出來的網(wǎng)絡(luò)信號就可以。而微信聊天室的基本原理,可以用下面的圖來簡單的解釋:

          程序設(shè)計思路圖

          上圖中主要分為服務(wù)器端和客戶端兩個部分:

          • 服務(wù)器端只存在一個,而可以存在多個客戶端;

          • 客戶端與服務(wù)器端之間存在信息的交互,客戶端將信息發(fā)送給服務(wù)器端后;

          • 服務(wù)器將收到的信息群發(fā)給每一個客戶端;

          這樣就可以在每個客戶端中顯示群聊的信息,實現(xiàn)聊天室的功能。


          02.程序設(shè)計

          對于核心原理有一個簡單的認(rèn)識之后,接下來我們來看一下,服務(wù)器端和客戶端程序是如何實現(xiàn)吧。

          01).服務(wù)器設(shè)計

          首先我們來看一下服務(wù)器端的程序,從上面的原理介紹中可以看出,我們的核心是利用Python來進(jìn)行網(wǎng)絡(luò)編程,而在Python中,網(wǎng)絡(luò)編程則離不開socket庫的使用,如下圖所示:

          程序首先利用socket庫來建一個服務(wù)器,然后服務(wù)器開始對客戶端進(jìn)行監(jiān)聽,當(dāng)有客戶端接進(jìn)來的時候,則創(chuàng)建一個新的線程來處理客戶端的信息,每一個新的線程都處理一個self.chat函數(shù),如下圖所示:

          上圖中,brodCast函數(shù)的作用是向每一個客戶端進(jìn)行信息的傳遞,而在self.chat函數(shù)中,首先獲取用戶的姓名信息,并在聊天室中打印出歡迎用戶進(jìn)入聊天室。然后再while循環(huán)中,不斷的獲取客戶端的信息并向所有的客戶端進(jìn)行廣播。
          以上就是服務(wù)器端程序的作用,接下來我們再來看一下客戶端的程序。


          02).客戶端的設(shè)計

          客戶端由于涉及到了用戶的界面設(shè)計,所以程序上會比較繁瑣一點,首先是用戶登錄系統(tǒng)的設(shè)置。

          上述的用戶窗口程序作用是用來進(jìn)行用戶的登錄信息的驗證,其效果圖如下所示。


          當(dāng)用戶輸入用戶名和密碼之后,程序會調(diào)用check函數(shù)來進(jìn)行驗證,是否正確,如果程序正確的話,則會正常進(jìn)行聊天室,否則程序會提示錯誤,程序退出。

          當(dāng)我們正常進(jìn)入聊天室后,聊天室的頁面布局如下圖所示。



          聊天室中,畫面最上方是聊天室的信息內(nèi)容展示窗口,而中間的是用戶的聊天信息輸入窗口,位于左下角的則是信息的發(fā)送按鈕。對于聊天室的界面構(gòu)造,我們同樣是利用tkinter進(jìn)行構(gòu)造的,大家可以下載源碼來進(jìn)行更加仔細(xì)的了解。這里,“發(fā)送”按鈕綁定的是send函數(shù) ,如下圖所示:


          在send函數(shù)中,函數(shù)獲取用戶的輸入信息,并將信息發(fā)送給給服務(wù)器端,而上面的get_msg函數(shù),則是用來接收服務(wù)器端發(fā)來的信息,并將信息顯示在聊天室的窗口中。

          03.視頻展示

          以上的程序便是服務(wù)器端和客戶端的程序內(nèi)容的展示,接下來我們運行一下程序進(jìn)行結(jié)果的展示吧。


          好了,今天的聊天室程序就講到這里,Python就是這么有趣好玩,如果你覺得“武林外傳”這個聊天室名字不過癮,你可以起其他的“星球大戰(zhàn)”,“海賊王”你喜歡的名字,反正你的程序你做主,嘿嘿~~

          如果您覺得本篇對你有用,可以收藏或者轉(zhuǎn)發(fā)給有興趣學(xué)Python的同學(xué),原創(chuàng)不易記得來個三連哦!
          如何獲取源碼:
          需要源碼的同學(xué),后臺輸入:小助手,找他拿,備注:聊天室。
          再次感謝!我是菜鳥哥,我們下篇見!




          程序員GitHub,現(xiàn)已正式上線!


          接下來我們將會在該公眾號上,專注為大家分享GitHub上有趣的開源庫包括Python,Java,Go,前端開發(fā)等優(yōu)質(zhì)的學(xué)習(xí)資源和技術(shù),分享一些程序員圈的新鮮趣事。





          年度爆款文案



          點這里,獲取新手福利

          瀏覽 63
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人免费在线观看 | 亚洲巨爆乳一区二区三区 | 日逼网站免费看 | 日本黄色视频网站在线 | 777三级 |