七夕用python給男朋友寫的小程序,感動哭了.

2021-02-13 可樂的數據分析之路

七夕將至,給男朋友寫了個小程序,把他感動哭了,把我可累慘了。

可樂我也不是程序媛專門敲代碼的,雖然也學過,但也僅局限於用pandas處理一下數據的程度,要寫一個界面並且能讓對方直接打開,有點超綱。

但是經過5天的不懈努力,終於也算寫出來了,就長下面這個樣子,其實就是Python裡用tkinter模塊做的一個GUI圖形界面。(文末有原碼獲取方式)

這其實是一個悲傷的故事,請看到最後。

tkinter做的GUI圖形界面

登陸界面,輸入帳號密碼點擊照片登陸。

登陸界面
密碼輸入錯誤則出現以下彈窗:

試圖關閉界面,則出現以下彈窗:
image.png
輸入密碼登陸以後開始答題,請忽視這個醜醜的背景色。

答題界面開始,總共設置了5個問題,答錯都會出現錯誤提示彈窗,關閉界面也會出現禁止關閉的彈窗。

答完所有的題目來到倒數第二頁,放上你想說的話。

點擊【想看最後一頁是什麼】的按鈕來到最後一頁

最後一頁就是個愛我嗎的界面,有3個按鈕可以選擇。

選擇【愛】和【很愛】會彈出一樣的界面,不會關機啦,是個迷惑行為,點擊【關機】按鈕整個對話框就全部關閉了,時間緊迫,還沒研究出怎麼真的關機。

實際上就想讓他點【超級愛】這個按鈕,點了以後是如下界面,點擊【好棒,我還要再來億遍】也是個迷惑按鈕,不會真的從頭開始的,禁止套娃!點擊以後同樣對話框全部關閉。

如何寫程序

我是在jupyter notebook裡寫的,用tkinter包,這個包的用法也很簡單,對著視頻或者其他參考教程慢慢也就搞定了,當然,我是小白啦,之前也沒有接觸過面向對象的概念,寫個這個程序也把python語法又重新捋了一遍,尤其是class的概念,終於把程序啃下來以後,我發現,這才哪到哪兒啊,後面發布的時候還會遇到各種各樣的bug。

打包發布

當然寫好以後這只是一個.py的文件,想要讓對方可以在電腦上直接打開,需要把它打包成一個.exe的可執行文件。


打包用的是pyinstaller方法,網上也有一大堆教程貼,以前沒用過,實際用的時候也是踩了一堆坑,貼幾個常見問題吧:Q1:安裝pyinstaller包

同python裡其他包安裝的方法一樣,用pip方法就可以安裝,假如你的電腦上裝的是Anaconda軟體,那麼可以打開Anaconda Prompt界面。


在命令行裡直接輸入

pip install pyinstaller

就會自動安裝了,安裝成功以後會出現XXXXXsuccessfully字樣,可以測試一下是否真的安裝成功了,可以查看下版本信息,彈出版本信息則說明安裝成功了。

具體的安裝pyinstaller的方法可以參照這個帖子。
pyinstaller打包py文件為exe方法

Q2:安裝好pyinstaller後如何打包?

安裝好pyinstaller報以後,還是在Anaconda Promt命令行裡輸入命令來打包,首先進到你要打包的.py程序所在的文件夾,這是我的路徑,你可以替換成你的路徑。

cd  C:\Users\18829\Desktop\cat_dog


cd 表示進入某個文件夾,後面是文件夾的路徑

然後輸入:

pyinstaller -F -w 7xi_V2.py

-F參數是將程序打包成一個可執行的文件,-w參數是不生成命令行窗口,注意7xi_V2.py是我寫好的要打包的python文件名,這裡替換成你自己的就行。

打包完成後在.py所在文件夾裡會出現幾個文件夾,點開dist文件夾,裡面就是我們打包好的.exe文件了,點擊可以運行即可。


可以看到這裡我把圖片放到了dist文件夾裡,原因請閱讀到後面的Q3:程序在別人的電腦上無法運行
Q3:程序在別人的電腦上無法運行

打包完以後,點擊.exe試運行一下,可以運行的話,也不要沾沾自喜,將程序發到別人的電腦上,看能否運行,這才是關鍵。

嘿,結果發現真的無法運行,並彈出如下錯誤彈窗。

搜了很多帖子,發現我打包的時候用的是-F -w,就不會有命令行顯示,所以就沒法知道報錯的原因,這時候就回到打包那步,打包的時候使用默認狀態打包,也就是不加參數的打包,輸入:

pyinstaller 7xi_V2.py

這是默認狀態,將.py代碼放在一個目錄中,這樣後面出錯時就可以輕鬆在命令行中找到問題所在。

以默認狀態打包完以後同樣在dist文件裡把.exe文件發給對方電腦,執行後發現命令行中彈出如下錯誤:


這個錯誤告訴我們,有一張圖片找不到,這是因為pyinstaller無法把圖片一起打包,那麼我們只要把這個圖片和打包好的exe文件放在一起發給對方,也是可以的。

同時我發現我寫這個程序的時候,使用的是絕對路徑,那麼我需要把這個圖片的路徑改成相對路徑,然後再保存,再打包,最後把圖片複製粘貼到打包好的dist文件夾中,再發到其他電腦上,exe文件就可以直接運行了。

這裡因為我只有一張圖片,為了省事,就這樣搞了,實際上如果你的圖片較多,可以去搜索一下圖片打包的方法,可以參考這個帖子:
pyinstaller打包GUI程序時的圖片處理——圖片資源無法顯示問題

悲傷的故事

好,下面才是正文。

當我把程序寫完,打包好,並且在其他電腦上測試能正常打開後,我突然想要在男票的電腦上測試一下,於是告訴他想用他的mac電腦打開一個exe文件,被他嘲笑了一通:

windows系統才能打開exe文件,mac系統是打不開的。


啊,居然是這樣的嘛,好吧,沒用過mac真的不懂,於是我又打開電腦,火速搜索:把python打包成mac系統可執行文件的方法。
Round 1:打包成app

發現清一色的帖子都是用py2app這個包來打包的,好嘛,打嘛。

於是我在我的windows電腦上用py2app方法來打包,嘿,又報錯了,然後發現,原來是要在mac電腦上用py2app來打包。

這可太難受了,本來我就用不慣mac,現在還要在上面操作一通,硬著頭皮上吧,為了七夕小驚喜。

悄悄進入男票電腦,mac是自帶python 2.7的,但是沒有安裝過那些包,所以要先進入終端,安裝py2app包,按照教程裡的方法3步走

pip3 install py2pp

cd ~/Desktop/cat_dogApp

py2applet --macke-setup 7xi_v2.py

Round2:在py2applet路徑下執行命令

初始化原始的py程序,建立一個setup.py,結果報錯了:

error:py2applet:command not found

說找不到py2applet,在搜索了一大圈帖子後,發現要進入到py2applet所在的路徑再輸入這條命令。

Round3:超綱了

py2applet初始化文件成功了,但打包的時候還是出現了問題,又報錯了

error: [Errno 1] Operation not permitted

百度了一下發現MacOSX El Captain引入的SIP功能會影響py2app創建應用,解決步驟也好複雜,這個帖子裡有寫py2app打包Mac應用程式,不過我還是沒成功,太超綱了。

但是,困難總比方法少,既然我打包不成功,那麼直接在他的mac上能運行.py文件也行啊。

Round4:直接運行python文件

然後我就又進入終端運行這個py文件,又雙叒報錯了,提示找不到tkinter模塊,沒有就裝嘛,pip裝它,結果顯示沒有tkinter包……


此時我已經面臨崩潰的邊緣……
Round5:裝雙系統

算鳥,直接在他電腦上裝個windows系統,雙系統總可以打開我之前做好的exe文件了吧。


有點複雜……Round6:買個windows系統的電腦

曲線救國,直接給他買個小米筆記本電腦,再把我的exe文件拷過來得了,真的是困難總比方法少啊!


就是總感覺哪裡有點不對

不是七夕禮物只是一個小程序嗎,怎麼變成了一臺筆記本電腦了???

害,怪不得男朋友感動哭了。

最後,這個小程序的原碼也分享出來,寫的不好,請大神不要嫌棄。

後臺回復「七夕」即可獲得原碼。

還有1天,抓緊搞起來啊兄弟姐妹們!

猜你喜歡:

如何做好描述統計分析
如何進行數據圖形化?
簡單地聊聊統計學
什麼是好的數據指標:精益數據分析
鐵達尼號數據分析

相關焦點

  • python應用(2):寫個python程序給自己用
    用python寫一個程序,然後在命令行上執行,看不到界面(UI),這種程序很常見了,叫命令行程序。
  • 七夕剛過 | 用OpenCV+Python給單身狗發女朋友
    點擊上方"藍色小字"關注我呀明天就是七夕了
  • 「女友送的20cm尺子,我當場感動哭了...」哈哈哈自欺欺人啊!
    4.寫字也用機械化設備了,這是被罰寫作業的學生發明的,創意來源於生活啊。9.男朋友在廣場上等我,由於我逛街的速度太慢,他準備買一頭小豬陪伴!11.旋風小陀螺,在下過雨的地上秀技術,讓周圍的大叔拍手叫絕!
  • 快速掌握用python寫並行程序,乾貨滿滿
    目錄2.2 改用GPU處理計算密集型程序三、用python寫並行程序四、multiprocessing實戰小子今天想來談談「並行計算」,作為一個非科班人員,我為什麼去搗鼓這麼一個在科班裡也比較專業的問題了
  • 七夕送禮,送男/女友這些絕不出錯!
    一共4種搭配可選擇,都有自己不同的風格。右滑查看所有組合藍風鈴被很多人說成西瓜的味道,和夏天非常搭配。英國梨是清新果香,噴上感覺就像鄰家小女孩,甜而不膩。牡丹更適合冬季,酸甜的蘋果香與清幽的茉莉香,隨後是溫柔的脂粉與玫瑰味,就像冬日的陽光。
  • 自從我把男朋友送到海底撈培訓後,哈哈哈哈哈哈哈......
    @不知哪塊小餅乾領證那天去吃了海底撈,服務員看我拿著玫瑰就來問,男朋友說剛結婚,然後他就拉著我倆起來跳小蘋果.最後整個店的服務員和客人都一起跳小蘋果,跟印度電影似的一言不合就跳舞,後來還送我一對男女寶寶玩偶#也不知道從哪兒變出來的#,當時剛結婚那個心境下差點感動哭了。
  • 通過Python寫一個OCR圖片識別小程序
    現在很多軟體都收費,所以本篇文章分享一個案例,如何通過Python寫一個ocr圖片識別小程序。本例中的程序十分簡單,流程如下:本例僅僅實現了基礎功能,還可以開發一個界面上傳圖片,或增加翻譯等功能。本例用到了百度的OCR識別,可以到百度雲中免費註冊,每天可以免費識別5萬次,足夠日常使用。
  • 我用 Python 寫了一個顏色色值轉換的小工具
    動機人總是懶得,想要寫這個小工具已經很久了,我也打過有過構思就是:輸入: 類似 RGB 的十進位值(110, 122 138),用空格或者逗號分割一下。需要分割字符查詢到python 字符分割函數 split(),默認不傳入參數就可以用空白符分割。原本還說用英文逗號(,)作為分隔符,現在看來可以省了,直接用空格分割,無論多少空格都可以自動分割。於是加上代碼:rgbColorArray = input.split()print(rgbColorArray)3.
  • 用Python+小程序實現詩詞大會的飛花令
    當時作為語音行業一員對此十分感興趣,想著能不能用程序實現一個,思考技術方案的時候發現最大難度就是數據,遂求助 碼農交友社區(https://github.com/),發現了開源庫 chinese-poetry(https://github.com/chinese-poetry/chinese-poetry),然後結合免費的百度語音識別,整個項目就成了。
  • 求婚英文賀卡怎麼寫_表白賀卡怎麼寫
    求婚英文賀卡怎麼寫?表白賀卡怎麼寫?
  • Wechat 微信新操作,簡直比男朋友還要好用!
    唉,其實它的更新總是光明正大的來,可新功能卻是偷偷摸摸的加……今天,小編就給大家安利一些比男朋友還好用的微信新功能~ 查航班不管是輸入航班號還是出發地+目的地,均可快捷查詢航班信息。舉例:寧波飛北京更新最新的微信 6.5.10 版本,就可以使用這五個比男朋友還貼心好用的查詢功能了。除此之外,還有幾個好玩赤雞的花式操作讓你停不下來。
  • 用Python寫個在線Python的網站怎麼樣
    前幾天,一個朋友提出了一個建議,如何用python寫出python的解釋器,我感覺這是一個很好的問題,於是就去看看,打算用python寫一個試試
  • 你用 Python 寫過哪些牛逼的程序/腳本?
    有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。本文摘編了 3 個國外程式設計師的多個小項目,含代碼。
  • 用Python和Pygame寫一個屬於自己的小遊戲(1)
    SDL是用C寫的,不過它也可以使用C++進行開發,當然還有很多其它的語言,Pygame就是Python中使用它的一個庫。Pygame已經存在很多時間了,許多優秀的程式設計師加入其中,把Pygame做得越來越好。安裝Pygame你可以從www.pygame.org下載Pygame,選擇合適你的作業系統和合適的版本,然後安裝就可以了(什麼,你連Python都沒有?
  • Python | 你用 Python 寫過最牛逼的程序/腳本是什麼?
    編譯:Python開發者 - Jake_on  英文:Quorahttp://python.jobbole.com/85986/有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。本文摘編了 3 個國外程式設計師的多個小項目,含代碼。
  • 你用 Python 寫過最牛逼的程序是什麼?
    有網友在 Quora 上提問,「你用 Python 寫過最牛逼的程序/腳本是什麼?」。因此,我寫了一個 python 腳本, 目的是為了使用 非官方的 IMDb API 來獲取數據。我選擇一個電影文件(文件夾),點擊右鍵,選擇『發送到』,然後 點擊 IMDB.cmd (順便提一下,IMDB.cmd 這個文件就是我寫的 python 腳本),就是這樣。
  • Sense | 2020七夕寵男友禮單新鮮出爐啦!(送男生篇)
    零點為大家送上男生版的七夕限定禮物清單,從遊戲皮膚到時尚單品樣樣俱全,這個七夕和我一起寵男友(對不起 我還沒有)!七夕來臨,各大遊戲網站怎麼會忘記推出一年一度的情侶皮膚呢?項羽和虞姬的同名皮膚霸王別姬,雖然沒有情人節限定標籤,但大家一直也是把他們當成是情侶皮膚的。后羿和嫦娥的同名皮膚如夢令,暫時也放著吧,以為也是有機會,也是有訴求的。
  • 一句查詢讓Python幫忙自己寫程序
    ,學會了Python的語法,但是轉頭就忘了,或者是想實現一個基礎的功能,但是程序不知道怎麼去寫。自己去網上找相應的問題,然後挑選合適的程序進行修改,非常的耗時耗力。今天,小編就帶領大家藉助一個新的Python庫來解決這個問題,讓大家只通過一個問題查詢的語句,便可以自動獲得對應的程序,省略自己編程帶來的煩惱。
  • AutoChess快報 | 別人男朋友寫的攻略
    ■看別人家男朋友寫的攻略如果我的女粉們的男朋友都能這樣對他們的女朋友…… 不對,我哪來的女粉?via-@甜星球日報社我的粉絲看了紛紛表示不以為然,並表示,如果你的女粉有這樣的男朋友還要你幹嗎