国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Tkinter實現(xiàn)一個垃圾分類答題軟件

這篇具有很好參考價值的文章主要介紹了基于Tkinter實現(xiàn)一個垃圾分類答題軟件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

電腦掛垃圾分類答題,GUI編程,python

???♂? 個人主頁:@艾派森的個人主頁

???作者簡介:Python學(xué)習(xí)者
?? 希望大家多多支持,我們一起進步!??
如果文章對你有幫助的話,
歡迎評論 ??點贊???? 收藏 ??加關(guān)注+


目錄

一、Tkinter

二、最終效果

三、項目過程

3.1分析布局

3.2創(chuàng)建窗口

3.3構(gòu)建題庫

3.4創(chuàng)建組件

3.5編寫事件函數(shù)

四、總結(jié)

源代碼


?

一、Tkinter

什么是GUI
? ? ? ? 圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶界面。圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項,以選擇命令、調(diào)用文件、啟動程序或執(zhí)行其它一些日常任務(wù)。與通過鍵盤輸入文本或字符命令來完成例行任務(wù)的字符界面相比,圖形用戶界面有許多優(yōu)點。圖形用戶界面由窗口、下拉菜單、對話框及其相應(yīng)的控制機制構(gòu)成,在各種新式應(yīng)用程序中都是標(biāo)準(zhǔn)化的,即相同的操作總是以同樣的方式來完成,在圖形用戶界面,用戶看到和操作的都是圖形對象,應(yīng)用的是計算機圖形學(xué)的技術(shù)。

? ? ? ? GUI 編程類似于“搭積木”,將一個個組件(Widget)放到窗口中。如下是 windows 中的 畫圖軟件,就是一個典型的 GUI 程序:

電腦掛垃圾分類答題,GUI編程,python

常用的 GUI 庫

1. Tkinter

????????tkinter(Tk interface)是 Python 的標(biāo)準(zhǔn) GUI 庫,支持跨平臺的 GUI 程序開發(fā)。tkinter 適合小型的 GUI 程序編寫,也特別適合初學(xué)者學(xué)習(xí) GUI 編程。本次以 tkinter 為核心進行講解。關(guān)于Tkinter基礎(chǔ)知識可參考Tkinter保姆級教程(上)和Tkinter保姆級教程(下)

2. wxPython

????????wxPython 是比較流行的 GUI 庫,適合大型應(yīng)用程序開發(fā),功能強于 tkinter,整體設(shè)計 框架類似于 MFC(Microsoft Foundation Classes 微軟基礎(chǔ)類庫)。

3. PyQT

????????Qt 是一種開源的 GUI 庫,適合大型 GUI 程序開發(fā),PyQT 是 Qt 工具包標(biāo)準(zhǔn)的 Python 實現(xiàn)。我們也可以使用 Qt Desginer 界面設(shè)計器快速開發(fā) GUI 應(yīng)用程序 。

一個最簡單的 Tkinter 程序至少應(yīng)包含以下四個部分:

  • 導(dǎo)入 tkinter 模塊
  • 創(chuàng)建主窗口,也稱 root 窗口(即根窗口)
  • 添加人機交互控件,同時編寫相應(yīng)的事件函數(shù)
  • 通過主循環(huán)(mainloop)來顯示主窗口

二、最終效果

先來看看本次項目的最終效果:

電腦掛垃圾分類答題,GUI編程,python

電腦掛垃圾分類答題,GUI編程,python

????????項目運行之后,程序會從題庫中隨機抽取10道題目來測試,當(dāng)你答對或答錯都會有彈窗提示,答對一道得10分,當(dāng)題目全部答完后會提示你題目已做完,并顯示你本次考試的最終得分。話不多說,開始上教程。

三、項目過程

3.1分析布局

????????由于本次只是做一個簡易的答題程序,所以整體頁面不需要太復(fù)雜。首先,需要Label標(biāo)簽來顯示每道題的題目,接著就是4個垂直擺放(或橫向)單選框按鈕,最后下面放個下一題的點擊按鈕。

3.2創(chuàng)建窗口

做任何項目,都需要先創(chuàng)建主窗口,也稱 root 窗口(即根窗口)。

# 導(dǎo)入本次項目用到的庫
import tkinter
from tkinter import *
from tkinter.messagebox import *
import random


if __name__ == '__main__':
    root = tkinter.Tk()  # 創(chuàng)建tkinter對象
    root.title('垃圾分類答題考試')  # 設(shè)置標(biāo)題
    root.geometry("500x200+500+300")   # 設(shè)置頁面的位置和長寬
    root.mainloop() # 讓窗口一直顯示出來

效果如下:

電腦掛垃圾分類答題,GUI編程,python

3.3構(gòu)建題庫

????????本次做的是垃圾分類的答題程序,所以我在網(wǎng)上找了一些關(guān)于垃圾分類的題目。這里我就直接用列表套元組的方式來存儲數(shù)據(jù)了。說明一下,元組中的第一個是題目,后面依次是ABCD選項,最后是本題的答案選項。

# 準(zhǔn)備一個題庫列表
object_list = [
('包了口香糖的紙巾屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('保鮮膜屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('變質(zhì)的香腸屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('檳榔渣屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('剝掉的蛋殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('菜刀屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('茶葉渣應(yīng)扔進哪個垃圾桶?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('吃剩的餅干渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('抽完煙的煙蒂是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('刀片屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('掉在地上的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('廢棄的食用油屬于?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('甘蔗渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('過期的化妝品是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('過期的貓糧屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('包裝藥片的鋁箔屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('喝茶剩下的茶葉渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('花生殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('壞掉的電腦屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('灰色塑料袋屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('回形針屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('雞骨頭屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('雞毛屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('家庭盆栽廢棄的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('堿性電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('膠卷屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('舊涼席屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('舊圖書屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('空的滅火器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('老舊電視機屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('落發(fā)屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('沒用完的鉛筆屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('沒有泡過的茶葉屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('哪一類可進行資源再生利用?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('蘋果手機電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('破碎的碗碟屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('染發(fā)劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('殺蟲劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('水果硬糖屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('水銀溫度計屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('撕掉了的舊照片,應(yīng)該丟到哪個垃圾桶內(nèi)?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('塑料筷子屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('塑料玩具是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('糖果包裝紙屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('西瓜籽屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
]

3.4創(chuàng)建組件

????????前面我們分析了本次項目的布局情況,需要1個Label便簽、4個單選按鈕、1個下一題按鈕,現(xiàn)在就開始將它們放置在主窗口中,從題庫中隨機抽取10道題目并顯示第一道題目。

# 導(dǎo)入本次項目用到的庫
import tkinter
from tkinter import *
from tkinter.messagebox import *
import random
# 準(zhǔn)備一個題庫列表
object_list = [
('包了口香糖的紙巾屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('保鮮膜屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('變質(zhì)的香腸屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('檳榔渣屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('剝掉的蛋殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('菜刀屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('茶葉渣應(yīng)扔進哪個垃圾桶?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('吃剩的餅干渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('抽完煙的煙蒂是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('刀片屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('掉在地上的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('廢棄的食用油屬于?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('甘蔗渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('過期的化妝品是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('過期的貓糧屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('包裝藥片的鋁箔屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('喝茶剩下的茶葉渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('花生殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('壞掉的電腦屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('灰色塑料袋屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('回形針屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('雞骨頭屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('雞毛屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('家庭盆栽廢棄的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('堿性電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('膠卷屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('舊涼席屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('舊圖書屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('空的滅火器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('老舊電視機屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('落發(fā)屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('沒用完的鉛筆屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('沒有泡過的茶葉屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('哪一類可進行資源再生利用?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('蘋果手機電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('破碎的碗碟屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('染發(fā)劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('殺蟲劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('水果硬糖屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('水銀溫度計屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('撕掉了的舊照片,應(yīng)該丟到哪個垃圾桶內(nèi)?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('塑料筷子屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('塑料玩具是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('糖果包裝紙屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('西瓜籽屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
]

if __name__ == '__main__':
    root = tkinter.Tk()  # 創(chuàng)建tkinter對象
    root.title('垃圾分類答題考試')  # 設(shè)置標(biāo)題
    root.geometry("500x200+500+300")   # 設(shè)置頁面的位置和長寬
    # 從題庫中隨機抽取10個題目作為考試題
    values = random.sample(object_list,10)
    # 創(chuàng)建一個字符串變量用來記錄選項值
    s = tkinter.StringVar()  
    s.set('E')  # 設(shè)置初始值為'E',初始沒選中
    # 設(shè)置初始題號和分值
    num = 0
    score = 0
    label = tkinter.Label(root, text=values[num][0])  # 用來顯示題目
    label.pack()
    # 創(chuàng)建第 1 個 Frame 組件
    f1 = Frame(root)  
    f1.pack()
    r1 = tkinter.Radiobutton(f1, variable=s, value='A', text=values[num][1])  # 安裝第一個單選按鈕
    r1.pack()
    r2 = tkinter.Radiobutton(f1, variable=s, value='B', text=values[num][2])  # 安裝第二個單選按鈕
    r2.pack()
    r3 = tkinter.Radiobutton(f1, variable=s, value='C', text=values[num][3])  # 安裝第三個單選按鈕
    r3.pack()
    r4 = tkinter.Radiobutton(f1, variable=s, value='D', text=values[num][4])  # 安裝第四個單選按鈕
    r4.pack()
        # 創(chuàng)建第 2 個 Frame 組件
    f2 = Frame(root)  
    f2.pack()
    # 創(chuàng)建下一題的按鈕
    Button(f2, text='下一題').pack(side=LEFT)
    # 默認(rèn)顯示第一道題目
    
    label["text"] = str(num+1) + '.' + values[num][0]  # 顯示題目
    # 顯示4個選項
    r1["text"] = values[num][1]  
    r2["text"] = values[num][2]
    r3["text"] = values[num][3]
    r4["text"] = values[num][4]
    root.mainloop() # 讓窗口一直顯示出來

效果如下:

電腦掛垃圾分類答題,GUI編程,python

?????????現(xiàn)在你點擊下一題是沒有反應(yīng)的,因為此時只是實現(xiàn)了頁面的布局工作,還沒有實現(xiàn)判斷對錯的功能。

3.5編寫事件函數(shù)

????????事件的邏輯是當(dāng)你點擊下一題按鈕的時候,程序判斷你對本題的選項是否與題庫中的答案一致,如果相等,則通過彈窗的形式提示你答對了;如果不相等,則通過彈窗的形式提示你答錯了。提示完之后還要緊接著顯示下一道題目。每次判斷完之后都要檢測本題是否已經(jīng)是最后一道題目,如果是則停止答題,得出本次測試的總得分。

# 定義一個判斷選項正確性的函數(shù)
def main(values):
    # 全局引用num和score變量
    global num 
    global score

    # 如果選項和答案相等則答對了
    if s.get() == values[num][5]:
        showinfo("恭喜", "恭喜你答對了!")  # 提示你答對了
        score += 10  # 得分加10分
    # 如果選項和答案不相等則答錯了
    else:
        showinfo("遺憾", "遺憾你答錯了!")  # 提示你答錯了
    num = num + 1  # 記錄題號
    # 如果題號已經(jīng)大于等于題目的總長度則需要進行結(jié)束并統(tǒng)計總分?jǐn)?shù)
    if num >= len(values):
        showinfo("結(jié)果", f"全部題目做完了!\n您的最終得分為{score}分!")  # 提示題目做完了,總結(jié)出你的得分
        root.quit()  # 程序退出
        return
    
    # 顯示下一題
    label["text"] = str(num+1) + '.' + values[num][0] # 顯示題目
    # 顯示4個選項
    r1["text"] = values[num][1]
    r2["text"] = values[num][2]
    r3["text"] = values[num][3]
    r4["text"] = values[num][4]
    s.set('E')  # 設(shè)置初始值為'E',初始沒選中

?同時還需要在下一題按鈕那添加該事件函數(shù)

Button(f2, text='下一題', command=lambda:main(values)).pack(side=LEFT)

到這里一個簡易版的答題程序已經(jīng)實現(xiàn),效果如前面所示。

四、總結(jié)

? ? ? ? 本次使用了Python中的tkinter庫實現(xiàn)了一個簡易的垃圾分類答題程序,其中的題庫和各種參數(shù)大家可以發(fā)揮自己的創(chuàng)意,自行進行修改,基于此源碼的基礎(chǔ)上創(chuàng)作出你的作品!

源代碼

# 導(dǎo)入本次項目用到的庫
import tkinter
from tkinter import *
from tkinter.messagebox import *
import random

# 準(zhǔn)備一個題庫列表
object_list = [
('包了口香糖的紙巾屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('保鮮膜屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('變質(zhì)的香腸屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('檳榔渣屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('剝掉的蛋殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('菜刀屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('茶葉渣應(yīng)扔進哪個垃圾桶?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('吃剩的餅干渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('抽完煙的煙蒂是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('刀片屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('掉在地上的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('廢棄的食用油屬于?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('甘蔗渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('過期的化妝品是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('過期的貓糧屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('包裝藥片的鋁箔屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('喝茶剩下的茶葉渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('花生殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('壞掉的電腦屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('灰色塑料袋屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('回形針屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('雞骨頭屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('雞毛屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('家庭盆栽廢棄的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('堿性電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('膠卷屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('舊涼席屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('舊圖書屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('空的滅火器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('老舊電視機屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('落發(fā)屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('沒用完的鉛筆屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('沒有泡過的茶葉屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('哪一類可進行資源再生利用?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('蘋果手機電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('破碎的碗碟屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('染發(fā)劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('殺蟲劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('水果硬糖屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
('水銀溫度計屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('撕掉了的舊照片,應(yīng)該丟到哪個垃圾桶內(nèi)?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
('塑料筷子屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('塑料玩具是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
('糖果包裝紙屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
('西瓜籽屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
]

# 定義一個判斷選項正確性的函數(shù)
def main(values):
    # 全局引用num和score變量
    global num 
    global score

    # 如果選項和答案相等則答對了
    if s.get() == values[num][5]:
        showinfo("恭喜", "恭喜你答對了!")  # 提示你答對了
        score += 10  # 得分加10分
    # 如果選項和答案不相等則答錯了
    else:
        showinfo("遺憾", "遺憾你答錯了!")  # 提示你答錯了
    num = num + 1  # 記錄題號
    # 如果題號已經(jīng)大于等于題目的總長度則需要進行結(jié)束并統(tǒng)計總分?jǐn)?shù)
    if num >= len(values):
        showinfo("結(jié)果", f"全部題目做完了!\n您的最終得分為{score}分!")  # 提示題目做完了,總結(jié)出你的得分
        root.quit()  # 程序退出
        return
    
    # 顯示下一題
    label["text"] = str(num+1) + '.' + values[num][0] # 顯示題目
    # 顯示4個選項
    r1["text"] = values[num][1]
    r2["text"] = values[num][2]
    r3["text"] = values[num][3]
    r4["text"] = values[num][4]
    s.set('E')  # 設(shè)置初始值為'E',初始沒選中

if __name__ == '__main__':
    root = tkinter.Tk()  # 創(chuàng)建tkinter對象
    root.title('垃圾分類答題考試')  # 設(shè)置標(biāo)題
    root.geometry("500x200+500+300")   # 設(shè)置頁面的位置和長寬
    # 從題庫中隨機抽取10個題目作為考試題
    values = random.sample(object_list,10)
    # 創(chuàng)建一個字符串變量用來記錄選項值
    s = tkinter.StringVar()  
    s.set('E')  # 設(shè)置初始值為'E',初始沒選中
    # 設(shè)置初始題號和分值
    num = 0
    score = 0
    label = tkinter.Label(root, text=values[num][0])  # 用來顯示題目
    label.pack()
    # 創(chuàng)建第 1 個 Frame 組件
    f1 = Frame(root)  
    f1.pack()
    r1 = tkinter.Radiobutton(f1, variable=s, value='A', text=values[num][1])  # 安裝第一個單選按鈕
    r1.pack()
    r2 = tkinter.Radiobutton(f1, variable=s, value='B', text=values[num][2])  # 安裝第二個單選按鈕
    r2.pack()
    r3 = tkinter.Radiobutton(f1, variable=s, value='C', text=values[num][3])  # 安裝第三個單選按鈕
    r3.pack()
    r4 = tkinter.Radiobutton(f1, variable=s, value='D', text=values[num][4])  # 安裝第四個單選按鈕
    r4.pack()
    # 創(chuàng)建第 2 個 Frame 組件
    f2 = Frame(root)  
    f2.pack()
    # 創(chuàng)建下一題的按鈕
    Button(f2, text='下一題', command=lambda:main(values)).pack(side=LEFT)
    # 默認(rèn)顯示第一道題目
    
    label["text"] = str(num+1) + '.' + values[num][0]  # 顯示題目
    # 顯示4個選項
    r1["text"] = values[num][1]  
    r2["text"] = values[num][2]
    r3["text"] = values[num][3]
    r4["text"] = values[num][4]
    root.mainloop()

?文章來源地址http://www.zghlxwxcb.cn/news/detail-811296.html

到了這里,關(guān)于基于Tkinter實現(xiàn)一個垃圾分類答題軟件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 基于YOLOv5開源項目實現(xiàn)垃圾分類功能(2)

    基于YOLOv5開源項目實現(xiàn)垃圾分類功能(2)

    ??在上篇文章中,我們已經(jīng)了解并學(xué)會如何使用yolov5這個開源項目,在這篇文章中,我們將會進行模型訓(xùn)練,使用自己訓(xùn)練出的權(quán)重文件實現(xiàn)我們的垃圾分類功能。 ??權(quán)重文件保存的就是訓(xùn)練好的網(wǎng)絡(luò)各層的權(quán)值,也就是通過訓(xùn)練集訓(xùn)練出來的。訓(xùn)練好之后,應(yīng)用時只要

    2024年02月04日
    瀏覽(15)
  • 基于springboot的垃圾分類網(wǎng)站的設(shè)計與實現(xiàn)

    基于springboot的垃圾分類網(wǎng)站的設(shè)計與實現(xiàn)

    本垃圾分類網(wǎng)站主要包括三大功能模塊,即用戶功能模塊和管理員功能模塊、垃圾分類管理員功能模塊。源碼下載 (1)管理員模塊:系統(tǒng)中的核心用戶是管理員,管理員登錄后,通過管理員功能來管理后臺系統(tǒng)。主要功能有:首頁、個人中心、用戶管理、垃圾分類管理員管

    2024年02月11日
    瀏覽(16)
  • 基于Springboot+vue的垃圾分類網(wǎng)站設(shè)計與實現(xiàn)

    基于Springboot+vue的垃圾分類網(wǎng)站設(shè)計與實現(xiàn)

    ?博主介紹 :?? 大家好,我是一名在Java圈混跡十余年的程序員,精通Java編程語言,同時也熟練掌握微信小程序、Python和Android等技術(shù),能夠為大家提供全方位的技術(shù)支持和交流。 我擅長在JavaWeb、SSH、SSM、SpringBoot等框架下進行項目開發(fā),具有豐富的項目經(jīng)驗和開發(fā)技能。我

    2024年02月09日
    瀏覽(18)
  • 基于Java+Swing+mysql實現(xiàn)垃圾分類管理系統(tǒng)

    基于Java+Swing+mysql實現(xiàn)垃圾分類管理系統(tǒng)

    該系統(tǒng)實現(xiàn)了 管理員:系統(tǒng)登陸、社區(qū)管理、設(shè)備管理、垃圾管理 小區(qū)負(fù)責(zé)人:查看垃圾分類信息、垃圾站信息、垃圾運輸信息 運行環(huán)境 idea、mysql5.7以上、maven 小區(qū)負(fù)責(zé)人 撤訴管理 報修信息 垃圾分類信息 垃圾站管理 垃圾運輸信息 Java+Swing實現(xiàn)學(xué)生選課管理系統(tǒng) Java+Swing實

    2024年02月12日
    瀏覽(27)
  • 基于Spring Boot的社區(qū)垃圾分類管理平臺的設(shè)計與實現(xiàn)

    基于Spring Boot的社區(qū)垃圾分類管理平臺的設(shè)計與實現(xiàn)

    近些年來,隨著科技的飛速發(fā)展,互聯(lián)網(wǎng)的普及逐漸延伸到各行各業(yè)中,給人們生活帶來了十分的便利,社區(qū)垃圾分類管理平臺利用計算機網(wǎng)絡(luò)實現(xiàn)信息化管理,使整個社區(qū)垃圾分類管理的發(fā)展和服務(wù)水平有顯著提升。 本文擬采用Eclipse開發(fā)工具,JAVA語言,Spring Boot框架進行

    2024年03月19日
    瀏覽(64)
  • 基于微信小程序的垃圾分類管理系統(tǒng)的設(shè)計與實現(xiàn)

    基于微信小程序的垃圾分類管理系統(tǒng)的設(shè)計與實現(xiàn)

    ? 摘要 本文對垃圾分類管理系統(tǒng)的構(gòu)建流程進行了介紹,其主要包括需求分析詳細(xì)設(shè)計、系統(tǒng)實現(xiàn)等重要部分組成,在此基礎(chǔ)上構(gòu)建的系統(tǒng)可應(yīng)用到實際的垃圾分類管理系統(tǒng)業(yè)務(wù)中。本系統(tǒng)的主要特點在于將微信小程序應(yīng)用到垃圾分類管理系統(tǒng)中,微信小程序的引入可提高系

    2024年02月05日
    瀏覽(44)
  • python開發(fā)項目基于語音識別的智能垃圾分類系統(tǒng)的設(shè)計與實現(xiàn)

    python開發(fā)項目基于語音識別的智能垃圾分類系統(tǒng)的設(shè)計與實現(xiàn)

    ?博主介紹 :擅長Java、微信小程序、Python、Android等,專注于Java技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn) ? ?? 文末獲取源碼聯(lián)系 ?? ?????精彩專欄 推薦訂閱 ?????不然下次找不到喲 Java項目精品實戰(zhàn)案例(300套) Java微信小程序項目實戰(zhàn)(200套) Python項目精品實戰(zhàn)案例(100套) 目錄

    2024年02月16日
    瀏覽(25)
  • 基于Java+Vue+uniapp微信小程序垃圾分類系統(tǒng)設(shè)計和實現(xiàn)

    基于Java+Vue+uniapp微信小程序垃圾分類系統(tǒng)設(shè)計和實現(xiàn)

    博主介紹 : ? 全網(wǎng)粉絲30W+,csdn特邀作者、博客專家、CSDN新星計劃導(dǎo)師、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn) ? ?? 文末獲取源碼聯(lián)系 ?? ?????精彩專欄 推薦訂閱 ?????不然下次找不到喲 2022-2024年

    2024年02月04日
    瀏覽(19)
  • 基于微信小程序的垃圾分類系統(tǒng)的研究與實現(xiàn)(附源碼和教程)

    基于微信小程序的垃圾分類系統(tǒng)的研究與實現(xiàn)(附源碼和教程)

    本文介紹的事基于微信小程序的垃圾分類系統(tǒng),主要實現(xiàn)的功能有登錄、注冊、垃圾分類查詢、垃圾預(yù)約回收、垃圾分類功能。 本章節(jié)是論文的重點,基于上一章介紹的總體設(shè)計框架的搭建,詳細(xì)對小程序的頁面布局、流程設(shè)計、功能模塊進行描述,對整個項目實現(xiàn)進行闡述

    2024年02月02日
    瀏覽(36)
  • 基于微信小程序的垃圾分類系統(tǒng)設(shè)計與實現(xiàn)(2.0 版本,附前后端代碼)

    基于微信小程序的垃圾分類系統(tǒng)設(shè)計與實現(xiàn)(2.0 版本,附前后端代碼)

    博主介紹:?程序員徐師兄、7年大廠程序員經(jīng)歷。全網(wǎng)粉絲30W+、csdn博客專家、掘金/華為云/阿里云/InfoQ等平臺優(yōu)質(zhì)作者、專注于Java技術(shù)領(lǐng)域和畢業(yè)項目實戰(zhàn)? 視頻演示地址: 基于微信小程序的智能垃圾分類回收系統(tǒng),可作為畢業(yè)設(shè)計 小程序頁面及功能作如下設(shè)計: 1 .用戶

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包