Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第8章 - Python GUI編程;第9章 - Python數(shù)據(jù)庫編程_第1頁
Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第8章 - Python GUI編程;第9章 - Python數(shù)據(jù)庫編程_第2頁
Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第8章 - Python GUI編程;第9章 - Python數(shù)據(jù)庫編程_第3頁
Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第8章 - Python GUI編程;第9章 - Python數(shù)據(jù)庫編程_第4頁
Python程序設(shè)計基礎(chǔ)教程(微課版) 課件 代崴 第8章 - Python GUI編程;第9章 - Python數(shù)據(jù)庫編程_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Python程序設(shè)計第8章PythonGUI編程學(xué)習(xí)目標(biāo)理解事件處理機(jī)制掌握各種組件的使用方法知識目標(biāo)能夠編寫事件處理函數(shù)實現(xiàn)交互能夠編寫簡單的GUI程序能力目標(biāo)創(chuàng)新和個性化設(shè)計用戶體驗重要性情感態(tài)度與價值觀GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目

錄GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目

錄了解tkinter程序GUI編程基本概念GUI編程:專注設(shè)計具有圖形界面的應(yīng)用程序窗口控件布局事件處理Python

GUI庫tkinterPyQtwxPython8.1PythonGUI編程概述169導(dǎo)入tkinter模塊importtkinterastk創(chuàng)建GUI主窗體main_win=tk.Tk()

啟動消息主循環(huán),在主循環(huán)中等待用戶觸發(fā)事件main_win.mainloop()8.1.1初識tkinter程序179第一個tkiner程序:主窗口創(chuàng)建及設(shè)置部分8.1.1初識tkinter程序170importtkinterastk#主模塊#1、構(gòu)建頂層Tk對象main_win=tk.Tk()#創(chuàng)建主窗口#設(shè)置窗口標(biāo)題main_win.title('我的第一個tkinter窗口')#設(shè)置窗口大小:寬度x高度main_win.geometry('300x100')#3、進(jìn)入主循環(huán),等待用戶操作main_win.mainloop()示例8-1第一個tkiner程序:創(chuàng)建窗口內(nèi)的控件部分8.1.1初識tkinter程序170importtkinter.ttkasttk#帶主題的控件集模塊#2、創(chuàng)建窗口內(nèi)的控件#創(chuàng)建一個標(biāo)簽控件label1=ttk.Label(main_win,text='你好,tkinter!')label1.pack()#布局標(biāo)簽控件#創(chuàng)建一個按鈕控件button1=ttk.Button(main_win,text='點我!',command=button_click)button1.pack()#布局按鈕控件示例8-1第一個tkiner程序:按鈕響應(yīng)單擊事件處理部分8.1.1初識tkinter程序170#消息窗口模塊importtkinter.messageboxasmessagebox#按鈕被點擊時的處理函數(shù)defbutton_click():messagebox.showinfo('消息','按鈕"點我!"被點擊了!')示例8-1第一個tkiner程序:運(yùn)行結(jié)果8.1.1初識tkinter程序1718.1.2GUI編程基本概念171容器:用于承載和組織其他控件的元素控件:GUI中用戶與之交互的元素布局:指控件在容器中的排列方式事件:描述用戶動作或系統(tǒng)狀態(tài)變化事件響應(yīng):程序?qū)τ|發(fā)的事件作出的反應(yīng)綁定:將事件與事件響應(yīng)關(guān)聯(lián)起來的過程回調(diào)函數(shù):一種編程技術(shù)GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目

錄tkinter布局020403事件綁定tkinter常用控件目

錄GUI編程概述01pack布局grid布局place布局8.2tkinter布局172布局樣式基本使用方式布局特點適用于pack布局對象.pack()按控件調(diào)用pack()的順序布局少量組件或簡單布局grid布局對象.grid(row,col)二維表格布局,以行和列標(biāo)定組件放置的網(wǎng)格結(jié)構(gòu)化、布局規(guī)整對齊的界面place布局對象.place(x,y)自由度,精確控制組件的位置和大小精確控制位置或復(fù)雜布局GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目

錄事件綁定0304tkinter常用控件目

錄GUI編程概述0102tkinter布局隱式綁定顯式綁定tkinter支持的綁定行為某個控件對象綁定事件與處理函數(shù)某個控件類的所有對象綁定同一事件為窗口中所有控件綁定同一事件tkinter綁定方式隱式綁定顯式綁定8.3事件綁定176隱式綁定:通常經(jīng)控件的構(gòu)造函數(shù)或設(shè)置方法實現(xiàn)創(chuàng)建對象時指定command參數(shù)為一個函數(shù)名,該函數(shù)會隱式地綁定到該控件默認(rèn)的事件上8.3.1隱式綁定176defon_btn_click():btn2.config(text='點擊了上面的按鈕!')btn1=ttk.Button(main_win,text='隱式綁定',command=on_btn_click)btn1.pack(padx=20,pady=30)btn2=ttk.Button(main_win,text='文本會改變')btn2.pack(padx=20,pady=30)示例8-5顯式綁定:通過控件對象的bind()方法指定事件及其響應(yīng)函數(shù)event:具體的事件,是一個字符串func:響應(yīng)函數(shù)的名字當(dāng)event事件觸發(fā)時,程序會自動調(diào)用函數(shù)func8.3.2顯式綁定177控件對象.bind(event,func)8.3.2顯式綁定177事件類型觸發(fā)方式舉例事件字符串寫法用戶交互事件用戶動作直接觸發(fā)單擊鼠標(biāo)左鍵雙擊鼠標(biāo)左鍵按下鍵盤按鍵<事件字符串><Button-3>:右鍵單擊控件虛擬事件不依賴用戶的實際操作,可通過代碼觸發(fā)Text控件的剪貼/拷貝/粘貼事件Notebook控件的選項卡切換事件<<事件字符串>><<ComboboxSelected>>:下拉列表中某個元素被選擇bind()顯式綁定事件8.3.2顯式綁定177defon_btn_right_click(event):messagebox.showinfo('消息','右鍵單擊按鈕')defon_combo_selected(event):messagebox.showinfo('消息',combo.get())btn=ttk.Button(main_win,text='顯式綁定,右鍵單擊')btn.bind('<Button-3>',on_btn_right_click)combo=ttk.Combobox(main_win,values=('西瓜','番茄','柚子'))combo.bind('<<ComboboxSelected>>',on_combo_selected)示例8-6GUI編程概述01020403tkinter布局事件綁定tkinter常用控件目

錄tkinter常用控件04目

錄GUI編程概述0102tkinter布局03事件綁定常用控件控件創(chuàng)建及使用8.4tkinter常用控件178按鈕組件Button普通按鈕容器控件Frame框架CheckButton選擇按鈕Notebook選項卡RadioButton單選框滑塊scaleListbox列表框樹控件Treeview文本框控件Entry單行文本框菜單Menu標(biāo)簽LabelText多行文本框下拉列表Combobox本章結(jié)束Python程序設(shè)計第9章Python數(shù)據(jù)庫編程學(xué)習(xí)目標(biāo)理解sqlite3開發(fā)流程掌握sqlite3API使用知識目標(biāo)能夠使用sqlite3編寫簡單的數(shù)據(jù)庫應(yīng)用能力目標(biāo)新技術(shù)適應(yīng)性數(shù)據(jù)安全和隱私保護(hù)情感態(tài)度與價值觀了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊

sqlite3常用API目

錄了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊sqlite3常用API目

錄SQLite3應(yīng)用SQLite3特點SQLite3:輕量級關(guān)系數(shù)據(jù)庫嵌入式設(shè)備移動應(yīng)用開發(fā)小中型桌面應(yīng)用特點嵌入式數(shù)據(jù)庫引擎無服務(wù)器架構(gòu)零配置跨平臺9.1.1SQLite3數(shù)據(jù)庫主要特點212了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊sqlite3常用API目

錄了解sqlite3模塊0203sqlite3常用API目

錄了解SQLite3數(shù)據(jù)庫01sqlite3功能sqlite3基本使用sqlite3模塊:對SQLite3C語言接口的封裝,用于在Python環(huán)境下與SQLite3數(shù)據(jù)庫交互主要功能連接與游標(biāo)執(zhí)行SQL命令獲取查詢結(jié)果事務(wù)處理錯誤處理數(shù)據(jù)類型:NULL、INTEGER、REAL、TEXT、BLOB9.1.2初識sqlite3模塊213sqlite3模塊的基本使用9.1.2初識sqlite3模塊213importsqlite3connection=sqlite3.connect('9-1.db')c=connection.cursor()#創(chuàng)建游標(biāo)對象print("數(shù)據(jù)庫打開成功")示例9-1sqlite3模塊的基本使用9.1.2初識sqlite3模塊213c.execute('CREATETABLEcompany(idINTPRIMARYKEYNOTNULL,'

'nameTEXTNOTNULL,'

'ageINTNOTNULL,'

'addressCHAR(50),'

'salaryREAL);')#創(chuàng)建表print("數(shù)據(jù)表創(chuàng)建成功")示例9-1sqlite3模塊的基本使用9.1.2初識sqlite3模塊213connection.execute('INSERTINTOcompany(id,name,age,address,salary)''VALUES(1,"Paul",32,"California",20000)')mit()#提交事務(wù)connection.close()#關(guān)閉數(shù)據(jù)庫連接示例9-1了解SQLite3數(shù)據(jù)庫010203了解sqlite3模塊sqlite3常用API目

錄sqlite3常用API03目

錄了解SQLite3數(shù)據(jù)庫0102了解sqlite3模塊連接與游標(biāo)對象SQL命令執(zhí)行查詢與遍歷結(jié)果事務(wù)提交與回滾關(guān)閉資源connect():創(chuàng)建一個連接對象并返回,該對象關(guān)聯(lián)至一個SQLite數(shù)據(jù)庫文件database字符串“:memory:”:創(chuàng)建一個內(nèi)存數(shù)據(jù)庫文件文件名:文件存在則打開,不存在則創(chuàng)建后再打開timeout:設(shè)置連接等待時間,默認(rèn)為5秒9.2.1連接數(shù)據(jù)庫

214連接對象=sqlite3.connect(database[,

timeout,...])9.2.1連接數(shù)據(jù)庫214連接數(shù)據(jù)庫importsqlite3try:

#嘗試連接到SQLite數(shù)據(jù)庫

conn=sqlite3.connect('9-2.db')

print('連接成功')

conn.close()exceptsqlite3.Errorase:

#捕獲并處理連接失敗時拋出的異常

print(f'連接失敗:{e}')示例9-29.2.2獲取游標(biāo)對象215cursor():創(chuàng)建一個游標(biāo)對象并返回,該對象提供執(zhí)行SQL命令、獲取查詢結(jié)果的方法importsqlite3try:

conn=sqlite3.connect('9-3.db')

c=conn.cursor()#獲取游標(biāo)對象

conn.close()exceptsqlite3.Errorase:

print(f'發(fā)生異常:{e}')示例9-3連接對象.cursor([cursorClass])9.2.3執(zhí)行SQL命令215execute():用于執(zhí)行SQL命令sql:要執(zhí)行的SQL語句字符串,可以是CREATETABLE、INSERTINTO、UPDATE、DELETE或SELECT等parameters:可選參數(shù),可以是一個元組或字典,為參數(shù)化查詢中的占位符游標(biāo)對象.execute(sql[,parameters])9.2.3執(zhí)行SQL命令215通過游標(biāo)對象創(chuàng)建表并插入數(shù)據(jù)importsqlite3try:

conn=sqlite3.connect('9-4.db')

c=conn.cursor()

c.execute('CREATETABLEIFNOTEXISTSusers

('

'idINTEGERPRIMARYKEY,'

'nameTEXT,'

'ageINTEGER)')示例9-49.2.3執(zhí)行SQL命令215

#插入一條記錄,無參數(shù)

c.execute('INSERTINTOusers(name,age)VALUES("John",35)')

#插入一條記錄,使用參數(shù)化查詢

c.execute('INSERTINTOusers(name,age)VALUES(?,?)',('Alice',30))

mit()#提交事務(wù)

c.close()#關(guān)閉游標(biāo)

conn.close()#關(guān)閉數(shù)據(jù)庫exceptsqlite3.Errorase:

print(f'發(fā)生異常:{e}')示例9-49.2.3執(zhí)行SQL命令216通過游標(biāo)對象更新和刪除數(shù)據(jù)conn=sqlite3.connect('9-4.db')

c=conn.cursor()#將users表里name="John"的記錄中的age字段設(shè)置為31c.execute('UPDATEuserssetage=31WHEREname="John"')#刪除users表中name="Alice"的記錄c.execute('DELETEFROMusersWHEREname="Alice"')mit()

c.close()conn.close()示例9-5cursor.fetchone():從游標(biāo)內(nèi)部緩沖區(qū)中獲取一行查詢結(jié)果成功則返回包含該行數(shù)據(jù)的元組沒有更多數(shù)據(jù)可獲取返回None適合需要逐行處理查詢結(jié)果的場景9.2.4查詢數(shù)據(jù)與遍歷結(jié)果2169.2.4查詢數(shù)據(jù)與遍歷結(jié)果216fetchone()的使用conn=sqlite3.connect('9-4.db')c=conn.cursor()results=c.execute('SELECT*FROMusers')#獲取查詢結(jié)果的第一行row=results.fetchone()whilerowisnotNone:#只要獲取結(jié)果不為None

print(row)#輸出該條查詢結(jié)果

row=cursor.fetchone()#獲取下一行示例9-6cursor.fetchmany(size):從游標(biāo)內(nèi)部緩沖區(qū)中獲取指定數(shù)量的查詢結(jié)果返回一個列表對象,元素為元組,一個元組代表一行數(shù)據(jù)少于指定的size則返回所有記錄9.2.4查詢數(shù)據(jù)與遍歷結(jié)果2179.2.4查詢數(shù)據(jù)與遍歷結(jié)果217fetchmany()的使用conn=sqlite3.connect('9-6.db')

c=conn.cursor()

results=c.execute('SELECTname,ageFROMusersORDERBYageASC')#獲取查詢結(jié)果的第3行,即年齡最小的3個人rows=results.fetchmany(3)forrinrows:#rows是包含3個元組的列表對象

print(r)#每個元組代表一條查詢結(jié)果示例9-7cursor.fetchall:從游標(biāo)內(nèi)部緩沖區(qū)中獲取所有查詢結(jié)果返回一個列表對象,元素為元組,一個元組代表一行數(shù)據(jù)9.2.4查詢數(shù)據(jù)與遍歷結(jié)果2179.2.4查詢數(shù)據(jù)與遍歷結(jié)果217fetchall()的使用方法conn=sqlite3.connect('9-4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論