1. 程式人生 > >【Python Gui】Tkinter 的入門學習

【Python Gui】Tkinter 的入門學習

一、前面的話

Python 提供了多個圖形開發介面的庫,幾個常用 Python GUI 庫如下:

  • Tkinter: Tkinter 模組(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Macintosh 系統裡。Tk8.0 的後續版本可以實現本地視窗風格,並良好地執行在絕大多數平臺中。

  • wxPython:wxPython 是一款開源軟體,是 Python 語言的一套優秀的 GUI 圖形庫,允許 Python 程式設計師很方便的建立完整的、功能健全的 GUI 使用者介面。

  • Jython:Jython 程式可以和 Java 無縫整合。除了一些標準模組,Jython 使用 Java 的模組。Jython 幾乎擁有標準的Python 中不依賴於 C 語言的全部模組。比如,Jython 的使用者介面將使用 Swing,AWT或者 SWT。Jython 可以被動態或靜態地編譯成 Java 位元組碼。

本文僅以Tkinter為例,說說吧。很多年前,學過QT,當年貌似還在使用C++,瞭解過Qt-designer 以及 Qt-creator ,並且用它完成了個人畢業設計,至此,再也沒有用過Qt。最近這些年一直忙於後臺,其實會點介面知識也挺好,寫點小工具方便自己。僅以此篇作為我Python gui的入門吧。

Tkinyer 和Qt 很多方面還是很類似的,有很多方便的元件,標籤、列表、按鈕等等。。。。而Qt 可以自己手動拖拽,這點其實要比Tkinyer要強的。不過誰讓python是這麼流行的語言呢!

二、Tkinter元件

Tkinter 元件

Tkinter的提供各種控制元件,如按鈕,標籤和文字框,一個GUI應用程式中使用。這些控制元件通常被稱為控制元件或者部件。

目前有15種Tkinter的部件。我們提出這些部件以及一個簡短的介紹,在下面的表:

控制元件 描述
按鈕控制元件;在程式中顯示按鈕。
畫布控制元件;顯示圖形元素如線條或文字
多選框控制元件;用於在程式中提供多項選擇框
Entry 輸入控制元件;用於顯示簡單的文字內容
Frame 框架控制元件;在螢幕上顯示一個矩形區域,多用來作為容器
Label 標籤控制元件;可以顯示文字和點陣圖
Listbox 列表框控制元件;在Listbox視窗小部件是用來顯示一個字串列表給使用者
Menubutton 選單按鈕控制元件,由於顯示選單項。
Menu 選單控制元件;顯示選單欄,下拉選單和彈出選單
Message 訊息控制元件;用來顯示多行文字,與label比較類似
Radiobutton 單選按鈕控制元件;顯示一個單選的按鈕狀態
Scale 範圍控制元件;顯示一個數值刻度,為輸出限定範圍的數字區間
Scrollbar 滾動條控制元件,當內容超過視覺化區域時使用,如列表框。.
Text 文字控制元件;用於顯示多行文字
Toplevel 容器控制元件;用來提供一個單獨的對話方塊,和Frame比較類似
Spinbox 輸入控制元件;與Entry類似,但是可以指定輸入範圍值
PanedWindow PanedWindow是一個窗口布局管理的外掛,可以包含一個或者多個子控制元件。
LabelFrame labelframe 是一個簡單的容器控制元件。常用與複雜的窗口布局。
tkMessageBox 用於顯示你應用程式的訊息框。

1、tk初始

 這是一切的根源,你想要完成一個gui,他是地板,然後在上面進行擴充套件。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import Tkinter
top = Tkinter.Tk()
# 進入訊息迴圈
top.mainloop()

tkwindow                

2、按鈕  

這個有點類似於  Qt- 的訊號-槽函式 的關係,點選button觸發到事件。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import Tkinter
import tkMessageBox
 
top = Tkinter.Tk()
 
def helloCallBack():
   tkMessageBox.showinfo( "Hello Python", "Hello Runoob")
 
B = Tkinter.Button(top, text ="點我", command = helloCallBack)
 
B.pack()
top.mainloop()

3、標籤 & 輸入框

#!/usr/bin/python
# -*- coding: UTF-8 -*-

from Tkinter import *

top = Tk()
L1 = Label(top, text="網站名")
L1.pack(side=LEFT)
E1 = Entry(top, bd=5)
E1.pack(side=RIGHT)

top.mainloop()

三、Tk實戰

《程式碼暫時不放出來了,之後再放吧》

1、翻譯器

#!/usr/bin/python
# -*- coding: UTF-8 -*-

from  Tkinter import *
import tkMessageBox
import requests

# 定義button事件
def translation():
    content=entry.get()
    if  content == '':
        tkMessageBox.showinfo("提示", "請輸入需要翻譯的內容")
    else:
        print content
    header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}
    url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    # url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
    data = {}
    data['i'] = content
    data['from'] = 'AUTO'
    data['to'] = 'AUTO'
    data['smartresult'] = 'dict'
    data['client'] = 'fanyideskweb'
    # data['salt'] = '1530332652360' # 時間戳
    # data['sign'] = '7f281888e41d12a63b20790707672708'
    data['doctype'] = 'json'
    data['version'] = '2.1'
    data['keyfrom'] = 'fanyi.web'
    data['action'] = 'FY_BY_CLICKBUTTION'
    data['typoResult'] = 'false'
    result = requests.post(url,data=data,headers=header)
    translation = result.json()
    translation = translation['translateResult'][0][0]['tgt']
    print(translation)
    res.set(translation)


root = Tk()
#1、視窗標題

res = StringVar()

root.title('中英文互譯')
#2、視窗大小,顯示位置
root.geometry('290x100+573+286')
#3、標籤控制元件
lable = Label(root,text='輸入要翻譯的文字',font=('微軟雅黑',10), fg='black')
lable.grid()

lable = Label(root,text='翻譯結果',font=('微軟雅黑',10), fg='black')
lable.grid()

#4、輸入控制元件
entry=Entry(root, font='微軟雅黑')
entry.grid(row=0,column=1)
#顯示翻譯之後的內容
entry2=Entry(root, font='微軟雅黑', textvariable=res)
#輸入標籤位置
entry2.grid(row=1,column=1)

#5、按鈕控制元件
button = Button(root, text ="翻譯",width=10,font=('微軟雅黑',10),command=translation)
button.grid(row=2,column=0,sticky=W)

button = Button(root, text ="退出",width=10,font=('微軟雅黑',10), command=root.quit)
button.grid(row=2,column=1,sticky=E)

#-----------------至此,介面已經畫出來了---------------------------

root.mainloop()

2、音樂下載器

# -*- coding:utf-8 -*-
from tkinter import *
import  requests
from bs4 import BeautifulSoup
# 根據連結下載歌曲
import urllib
import os

def mkdir(path):
    # 去除首位空格
    path = path.strip()
    # 去除尾部 \ 符號
    path = path.rstrip("\\")

    isExists = os.path.exists(path)
    if not isExists:
        # 建立目錄操作函式
        os.makedirs(path)
        print path + ' 建立成功'
        return True
    else:
        # 如果目錄存在則不建立,並提示目錄已存在
        print path + ' 目錄已存在'
        return False

# 定義要建立的目錄
mkpath = "D:\\music\\"
# 呼叫函式
mkdir(mkpath)


#網易雲音樂為我們提供了一個根據歌曲 id 來下載歌曲的地址
#http://music.163.com/song/media/outer/url?id=543710263
def download_song():
    # 1.獲取使用者輸入的url下載連結
    url = entry.get()
    # http://music.163.com/song/media/outer/url?id=543710263
    # 2.獲取原始碼
    # http://music.163.com/playlist?id=2302867766
    header = {
        'Host': 'music.163.com',
        'Referer': 'http://music.163.com/',
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
    }
    html = requests.get(url, headers=header).text
    # 3.建立物件,解析網頁,獲取的s的資料型別成為一個物件,並且顯示的html程式碼格式變得清晰了
    s = BeautifulSoup(html, 'html.parser')
    # print(s)
    # 3.獲取id
    muisc_dict = {}
    result = s.find('ul', {'class', 'f-hide'}).find_all('a')
    # print(result)
    for music in result:
        muisc_id = music.get('href').strip('/song?id=')
        music_name = music.text
        muisc_dict[muisc_id] = music_name
    # print(muisc_dict)

    for song_id in muisc_dict:
        #song_url = 'http://music.163.com/playlist?id=%s' % song_id
        song_url = 'http://music.163.com/song/media/outer/url?id=%s' % song_id
        # 下載路徑
        path = 'D:\\music\\%s.mp3' % muisc_dict[song_id]

        # 新增資料到列表框的最後
        text.insert(END, '正在下載:%s' % muisc_dict[song_id])
        # 文字框向下滾動
        text.see(END)
        # 更新(不更新就一直卡在那,顯示同樣的內容)
        text.update()

        # 下載歌曲
        urllib.urlretrieve(song_url, path)

    text.insert(END,"下載完畢")

# 1.建立視窗
root = Tk()

# 2.視窗標題
root.title('網易雲音樂')

# 3.視窗大小以及顯示位置,中間是小寫的x
root.geometry('550x400+550+230')
# 視窗顯示位置
# root.geometry('+573+286')

# 4.標籤控制元件
lable = Label(root,text='請輸入要下載的歌單URL:',font=('微軟雅黑',10))
lable.grid(row=0,column=0)

# 5.輸入控制元件
entry =Entry(root,font=('微軟雅黑',25))
entry.grid(row=0,column=1)

# 6.列表框控制元件
text = Listbox(root,font=('微軟雅黑',16),width=45,height=10)
# columnspan元件所跨越的列數
text.grid(row=1,columnspan=2)

# 7.按鈕控制元件
button = Button(root,text='開始下載',width=10,font=('微軟雅黑',10),command=download_song)
button.grid(row=2,column=0,sticky=W)

button1 = Button(root,text='退出',width=10,font=('微軟雅黑',10),command=root.quit)
button1.grid(row=2,column=1,sticky=E)

# 訊息迴圈,顯示視窗
root.mainloop()

四、Python 打包釋出

我們知道,C++生成的exe 有自己打包工具:advanced installer,那麼python也有自己打包工具:pyinstaller.exe ,

  • 首先安裝pyinstaller,生成在環境目錄:Scripts
  • 在搜尋框輸入cmd
  • 執行  pyinstaller -F  -w   XXX.py
  • 生成可執行檔案exe在 dist目錄下面

五、效果展示

六、參考地址

引用知乎:

作者:Naples
連結:https://www.zhihu.com/question/32703639/answer/165326590
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
 

先說下我個人的情況,使用Matlab已3年有餘,期間編寫過幾個專業方面的計算程式以及做過數個地鐵振動訊號處理分析方面的專案,有一定的程式設計基礎。大概4個月前正式學習Python,用了2個月時間過了一遍Python的基本知識及語法,然後用了2~3天(課餘時間)的時間仿照扇貝網背誦英語單詞的模式,寫了一個背誦日語單詞的軟體Anki的底層程式碼(200餘句),輸入輸出都在shell裡,用起來很不方便。然後開始嘗試GUI,首先選擇的就是Python自帶的Tkinter,然後在網上找了Tkinter的相關文件:第一份是Tkinter簡明教程,不知所云,幾乎沒什麼幫助;第二份是2014年度辛星Tkinter教程第二版,內容淺顯易懂;第三份是Python GUI Programming Cookbook,內容詳細,幫助很大。大概用了5-6天的時間,邊看文件寫出了帶有簡單GUI介面的Anki2.0。又經過之後的元件升級,增加了許多功能,更新到了Anki3.2。先上圖:

先上結論:Tkinter真的不像大家說的那麼差,基本的功能都能實現,而且簡單易學容易上手。對於介面顏值沒有太高要求的,用Tkinter寫GUI是不錯的選擇。

1、元件

本軟體中用到了大概5個元件:

1.1、Button按鈕

語法如下:建立了名為Play播放的按鈕,綁定了命令sound_play。

b1 = ttk.Button(xin, text = 'Play\n播放',  width = 10, command = sound_play)
b1.grid(row=3,column=4, padx=10, pady=10)

1.2、Label標籤

語法如下:建立了名為Model的標籤。

mm1 = ttk.Label(xin, text = 'Model')
mm1.grid(row=0,column=1)

1.3、Combobox下拉列表

number = tk.StringVar()
LessonChosen = ttk.Combobox(xin, width=12, textvariable=number, state='readonly')
LessonChosen['values'] = lesson_name     # 設定下拉列表的值
LessonChosen.grid(column=2, row=1)      # 設定其在介面中出現的位置  column代表列   row 代表行
LessonChosen.current(lesson_name.index(str(WW[0])))    # 設定下拉列表預設顯示的值,0為 LessonChosen['values'] 的下標值

1.4、LabelFrame

labelframe1 = ttk.LabelFrame(xin, text='単語    (第    課,第    個單詞)', height = 80, width=300) # 資訊區
labelframe1.grid(row=3,column=1, columnspan = 3 , padx=10, pady=10) 
labelframe1.propagate(0) # 使元件大小不變,此時width才起作用
ttk.Label(labelframe1, text = "  ",font = ('Mincho, 20')).pack(fill="both", expand="yes")

1.5、Radiobutton單選按鈕

#單選按鈕radiobutton
v=tk.IntVar()  
v.set(1)
#f1.bind('<KeyPress-1>',word_know)
f1 = tk.Radiobutton(xin,text = 'Know', font =24, variable=v,value=1, command = word_know)  
f1.grid(row=6,column=2)
f1.configure(state='disabled')
#f2.bind('<KeyPress-2>',word_unknow)
f2 = tk.Radiobutton(xin,text = 'Unknow',font =24,variable=v,value=2, command = word_unknow)  
f2.grid(row=6,column=3)
f2.configure(state='disabled')

下面貼一段與『Play播放』按鈕繫結的sound_play函式的命令:

#Play按鈕
def sound_play():
    import winsound
    import time
    import os
    global xin
    global word_list
    if back_canshu == 0:
        if len(word_list_now)==0:
            showinfo(title = 'Message', message = '恭喜,本次單詞已經背完!')
            if BSM == 0:
                word_list1 = [R[1:3]]
                for i in range(len(word_list)):
                    if len(word_list[i])>=6:
                        if word_list[i][5]!='':
                            word_list1.append(word_list[i])
                del word_list
                word_list =word_list1
                #儲存file.txt
                import os
                os.remove(r'.\file.txt')
                #寫出單詞表資訊
                write_file_word(word_list,r'.\file.txt')
        else:
            if len(word_list_now)>=1:
                lesson = int(word_list_now[0][0])
                mn = int(word_list_now[0][1])
                if os.path.exists(r".\audio\L"+str(lesson)+"\L"+str(lesson)+"_"+str(mn)+".wav")==False:
                    winsound.PlaySound(r".\audio\Windows_Background.wav", winsound.SND_FILENAME|winsound.SND_ASYNC)
                    #第三行:labelframe單詞
                    labelframe1 = ttk.LabelFrame(xin, text='単語    (第 '+str(lesson)+' 課,第 '+str(mn)+' 個單詞)', height = 80, width=300) # 資訊區
                    labelframe1.grid(row=3,column=1, columnspan = 3 , padx=10, pady=10) 
                    labelframe1.propagate(0) # 使元件大小不變,此時width才起作用
                    ttk.Label(labelframe1, text = word_list_now[0][2], font = ('Mincho, 20')).pack(fill="both", expand="yes")
                else:
                    winsound.PlaySound(r".\audio\L"+str(lesson)+"\L"+str(lesson)+"_"+str(mn)+".wav", winsound.SND_FILENAME|winsound.SND_ASYNC)
    else:
        lesson = int(word_back[-back_canshu][0])
        mn = int(word_back[-back_canshu][1])
        if os.path.exists(r".\audio\L"+str(lesson)+"\L"+str(lesson)+"_"+str(mn)+".wav")==False:
            winsound.PlaySound(r".\audio\Windows_Background.wav", winsound.SND_FILENAME|winsound.SND_ASYNC)
        else:
            winsound.PlaySound(r".\audio\L"+str(lesson)+"\L"+str(lesson)+"_"+str(mn)+".wav", winsound.SND_FILENAME|winsound.SND_ASYNC)

2、軟體封裝打包

Python Tkinter打包封裝的方法有:PyInstaller, py2exe, wxPython等方法。答主只是用了PyInstaller來打包,感覺特別好用,對其它方法不做評論。

要說的是,打包過程中可以新增如下指令,自行嘗試打包後的差異:

-w指令,在指令內加入-w命令可以遮蔽釋出的exe應用帶命令列除錯視窗;

-F指令,使用-F指令可以把應用打包成一個獨立的exe檔案,否則是一個帶各種dll和依賴檔案的資料夾;

-i指令,可以自定義圖示。

簡單寫一下用pyinstaller打包軟體的過程:

①準備好打包檔案:

aiueo.py為程式碼,audio資料夾、tango資料夾和file.txt為程式關聯呼叫的檔案,a.ico為軟體圖示。

②在安裝的Python資料夾下的Scripts目錄下(包含pyinstaller.exe),shift+右鍵>>在此處開啟命令視窗:

③輸入:pyinstaller.exe -i C:\Users\Naples\aiueo\a.ico -w C:\Users\Naples\aiueo\aiueo.py 回車。

-i C:\Users\Naples\aiueo\a.ico 為圖示所在的目錄;

-w C:\Users\Naples\aiueo\aiueo.py 為程式所在目錄。

④在C:\Python34\Scripts目錄下就會出現這三個檔案:

可以將第一、三個檔案刪除,只留下dist資料夾。將和程式關聯的audio資料夾、tango資料夾和file.txt三個資料夾拷貝到dist/aiueo/目錄下。雙擊aiueo.exe,程式就可以使用了。

可以傳送桌面快捷方式,也可以將軟體打包拷貝到相同平臺下的電腦上使用。

軟體是根據2017年度赴日留學博士班基礎日語教程《実力日本語》編寫,包含了基礎日語L1~L60課的單詞和錄音,感興趣的可以嘗試下載,連結:http://pan.baidu.com/s/1i4O3gRN 密碼:a8kq

Python教程:

相關推薦

Python GuiTkinter入門學習

一、前面的話 Python 提供了多個圖形開發介面的庫,幾個常用 Python GUI 庫如下: Tkinter: Tkinter 模組(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用

待完善OpenGL入門學習

嚴正宣告:本文轉載自網路,但具體出處未知。如果有讀者瞭解,請聯絡我更正。 為了閱讀方便,我對文字格式進行了修改,並填補了缺少的圖片。 我尊重每位作者的權益,如果本文存在侵權行為,請聯絡我刪除並道歉。 OpenGL入門學習【一】 說起程式設計作圖,大概還有很多人想起TC的#include

Python-ML感知器學習演算法(perceptron)

1、數學模型   2、權值訓練   3、Python程式碼 感知器收斂的前提是兩個類別必須是線性可分的,且學習速率足夠小。如果兩個類別無法通過一個線性決策邊界進行劃分,要為模型在訓練集上的學習迭代次數設定一個最大值,或者設定一個允許錯誤分類樣本數量的閾值,否則感知器

Python學習筆記- 廖雪峰教程python 2//為繼續學習爬蟲準備-02 [待完善]

裝飾器的作用: 1 簡化程式碼,避免每個函式編寫重複性程式碼:列印日誌@log,檢測效能 @performance,資料庫事務 @transaction,URL路由@post('/register') import time def performance(f):

Python學習3月5號python編程 從入門到實踐---》筆記(2)

索引 modified 系列 入門到 忘記 而不是 super 函數 end 1.操作列表     一、遍歷整個列表,並且想對每一個元素執行相同的操作。##這裏就不得不提起我們一直用的For函數了。     二、深入地研究循環     (1)for i in

Python學習3月8號python編程 從入門到實踐---》筆記(1)

store 執行 \n true r.js under 進行 一聲 tor 第十章:處理文件和異常 #學習處理文件,讓程序能夠快速地分析大量的數據#學習錯誤處理,避免程序在面對意外情形時崩潰#學習異常,是python創建的特殊對象,用於管理程序運行時出現#學習模塊json

Python編程-從入門到實踐定義大範圍的整數數組range ( 從哪個整數開始,到哪個整數前結束 ,[從開始到結束的整數的每次步長] )

文檔 list 步長 字符串 range 不能 結果 字符 for range(1,5)  定義了從1開始到4的整數  [1,2,3,4] 場景1: numbers = range(1,5) for num in numbers:   print(num) 【結果】 1 2

Python:GUItkinter學習筆記2界面布局顯示

lB cfi ipa die uia 是否 打包 top adp 相關內容: pack 介紹 常用參數 使用情況 常用函數 grid 介紹 常用參數 使用情況 常用函數 place 介紹 常用參數 使用情況 常用函數 首發時間:2

Python:GUItkinter學習筆記之messagebox、filedialog

files try OS line pad 錯誤 mes false erro 相關內容: messagebox 介紹 使用 filedialog 介紹 使用 首發時間:2018-03-04 22:18 messagebox: 介紹:mes

Python量化手把手教你用python做股票分析入門

內容來自:微信公眾號:python金融量化 關注可瞭解更多的金融與Python乾貨。 目前,獲取股票資料的渠道有很多,而且基本上是免費的,比如,行情軟體有同花順、東方財富等,入口網站有新浪財經、騰訊財經、和訊網等。Python也有不少免費的開源api可以獲取交易行情資料,如pandas自

Python初學GUI猜數遊戲+打包(生成.exe可執行程式)

Python初學——GUI猜數遊戲 對於像我一樣的Python初學者,做練習總是像學C一樣從命令視窗輸出我們的程式,但是這樣子很無聊,不會變著花樣來。所以我在做Python練習時候,練習了一些有遊戲題目,但都是命令視窗式的遊戲,所以我就想把這種遊戲圖形化出來,

程式語言入門經典100例Python

無論學習哪門計算機語言,只要把100例中絕大部分題目都做一遍,就基本掌握該語言的語法了。 【程式1】 題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少? #Filename:001.py cnt = 0#count the sum of result for i in r

Python:GUItkinter學習筆記3事件綁定(轉載自https://www.cnblogs.com/progor/p/8505599.html)

borde proto mes level 字符串 from .com 當前 控件 相關內容: command bind protocol 首發時間:2018-03-04 19:26 command: command是控件中的一個參數,如果使得comma

Python:GUItkinter學習筆記3事件繫結(轉載自https://www.cnblogs.com/progor/p/8505599.html) Python:GUItkinter學習筆記3事件繫結

Python:GUI之tkinter學習筆記3事件繫結   相關內容: command bind protocol   首發時間:2018-03-04 19:26   command:

Python程式設計:從入門到實踐第九章:類

9-1 餐館 :建立一個名為Restaurant 的類,其方法__init__() 設定兩個屬性:restaurant_name 和cuisine_type 。建立一個名 為describe_restaurant() 的方法和一個名為open_restaurant() 的方

Python程式設計:從入門到實踐第十五章:生成資料

15-1 立方:數字的三次方被稱為其立方。請繪製一個圖形,顯示前5個整數的立方值,在繪製一個圖形,顯示前面5000個整數的立方值。 前5個整數的立方值:import matplotlib.pyplot as plt x_values = [1,2,3,4,5] y_val

Python爬蟲有道翻譯最新爬蟲教程,帶GUI應用介面,2018年3月18日實測可用

最新的有道翻譯爬蟲程式碼,包含應用程式介面,更新於20180318import urllib.request import urllib.parse import json import time import gzip import random import hashli

Python-MLSKlearn庫整合學習器Bagging

# -*- coding: utf-8 -*- ''' Created on 2018年1月19日 @author: Jason.F @summary: Bagging,通過bootstrap樣本構建整合分類器,樣本有放回抽樣。降低模型方差,防止過擬合。 ''' impo

Python爬蟲入門知識

爬蟲基本知識 本文目錄 寫在開頭 這陣子需要用爬蟲做點事情,於是系統的學習了一下python爬蟲,覺得還挺有意思的,比我想象中的能幹更多的事情,這裡記錄下學習的經歷。 網上有關

Python程式設計:從入門到實踐第十二章:武裝飛船

12-1 藍色天空 :建立一個背景為藍色的Pygame視窗。 import sys import pygame def run(): pygame.init() screen = pygame.display.set_mode((1200,600)) pygame.d