91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Python和Tkinter實現一個垃圾分類答題應用程序

發布時間:2023-04-21 17:40:52 來源:億速云 閱讀:167 作者:iii 欄目:編程語言

本篇內容介紹了“怎么使用Python和Tkinter實現一個垃圾分類答題應用程序”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

    一、Tkinter

    什么是GUI

    圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶界面。圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標等輸入設備操縱屏幕上的圖標或菜單選項,以選擇命令、調用文件、啟動程序或執行其它一些日常任務。與通過鍵盤輸入文本或字符命令來完成例行任務的字符界面相比,圖形用戶界面有許多優點。

    圖形用戶界面由窗口、下拉菜單、對話框及其相應的控制機制構成,在各種新式應用程序中都是標準化的,即相同的操作總是以同樣的方式來完成,在圖形用戶界面,用戶看到和操作的都是圖形對象,應用的是計算機圖形學的技術。

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

    怎么使用Python和Tkinter實現一個垃圾分類答題應用程序

    常用的 GUI 庫
    1. Tkinter

    tkinter(Tk interface)是 Python 的標準 GUI 庫,支持跨平臺的 GUI 程序開發。tkinter 適合小型的 GUI 程序編寫,也特別適合初學者學習 GUI 編程。本次以 tkinter 為核心進行講解。

    2. wxPython

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

    3. PyQT

    Qt 是一種開源的 GUI 庫,適合大型 GUI 程序開發,PyQT 是 Qt 工具包標準的 Python 實現。我們也可以使用 Qt Desginer 界面設計器快速開發 GUI 應用程序 。

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

    • 導入 tkinter 模塊

    • 創建主窗口,也稱 root 窗口(即根窗口)

    • 添加人機交互控件,同時編寫相應的事件函數

    • 通過主循環(mainloop)來顯示主窗口

    二、最終效果

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

    怎么使用Python和Tkinter實現一個垃圾分類答題應用程序

    項目運行之后,程序會從題庫中隨機抽取10道題目來測試,當你答對或答錯都會有彈窗提示,答對一道得10分,當題目全部答完后會提示你題目已做完,并顯示你本次考試的最終得分。

    三、項目過程

    3.1分析布局

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

    3.2創建窗口

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

    # 導入本次項目用到的庫
    import tkinter
    from tkinter import *
    from tkinter.messagebox import *
    import random
     
     
    if __name__ == '__main__':
        root = tkinter.Tk()  # 創建tkinter對象
        root.title('垃圾分類答題考試')  # 設置標題
        root.geometry("500x200+500+300")   # 設置頁面的位置和長寬
        root.mainloop() # 讓窗口一直顯示出來

    效果如下:

    怎么使用Python和Tkinter實現一個垃圾分類答題應用程序

    3.3構建題庫

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

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

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

    # 導入本次項目用到的庫
    import tkinter
    from tkinter import *
    from tkinter.messagebox import *
    import random
    # 準備一個題庫列表
    object_list = [
    ('包了口香糖的紙巾屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('保鮮膜屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('變質的香腸屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('檳榔渣屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('剝掉的蛋殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('菜刀屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('茶葉渣應扔進哪個垃圾桶?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('吃剩的餅干渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('抽完煙的煙蒂是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('刀片屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('掉在地上的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('廢棄的食用油屬于?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('甘蔗渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('過期的化妝品是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('過期的貓糧屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('包裝藥片的鋁箔屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('喝茶剩下的茶葉渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('花生殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('壞掉的電腦屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('灰色塑料袋屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('回形針屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('雞骨頭屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('雞毛屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('家庭盆栽廢棄的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('堿性電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('膠卷屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('舊涼席屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('舊圖書屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('空的滅火器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('老舊電視機屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('落發屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('沒用完的鉛筆屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('沒有泡過的茶葉屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('哪一類可進行資源再生利用?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('蘋果手機電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('破碎的碗碟屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('染發劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('殺蟲劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('水果硬糖屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('水銀溫度計屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('撕掉了的舊照片,應該丟到哪個垃圾桶內?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('塑料筷子屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('塑料玩具是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('糖果包裝紙屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('西瓜籽屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ]
     
    if __name__ == '__main__':
        root = tkinter.Tk()  # 創建tkinter對象
        root.title('垃圾分類答題考試')  # 設置標題
        root.geometry("500x200+500+300")   # 設置頁面的位置和長寬
        # 從題庫中隨機抽取10個題目作為考試題
        values = random.sample(object_list,10)
        # 創建一個字符串變量用來記錄選項值
        s = tkinter.StringVar()  
        s.set('E')  # 設置初始值為'E',初始沒選中
        # 設置初始題號和分值
        num = 0
        score = 0
        label = tkinter.Label(root, text=values[num][0])  # 用來顯示題目
        label.pack()
        # 創建第 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()
            # 創建第 2 個 Frame 組件
        f2 = Frame(root)  
        f2.pack()
        # 創建下一題的按鈕
        Button(f2, text='下一題').pack(side=LEFT)
        # 默認顯示第一道題目
        
        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() # 讓窗口一直顯示出來

    效果如下:

    怎么使用Python和Tkinter實現一個垃圾分類答題應用程序

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

    3.5編寫事件函數

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

    # 定義一個判斷選項正確性的函數
    def main(values):
        # 全局引用num和score變量
        global num 
        global score
     
        # 如果選項和答案相等則答對了
        if s.get() == values[num][5]:
            showinfo("恭喜", "恭喜你答對了!")  # 提示你答對了
            score += 10  # 得分加10分
        # 如果選項和答案不相等則答錯了
        else:
            showinfo("遺憾", "遺憾你答錯了!")  # 提示你答錯了
        num = num + 1  # 記錄題號
        # 如果題號已經大于等于題目的總長度則需要進行結束并統計總分數
        if num >= len(values):
            showinfo("結果", f"全部題目做完了!\n您的最終得分為{score}分!")  # 提示題目做完了,總結出你的得分
            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')  # 設置初始值為'E',初始沒選中

    同時還需要在下一題按鈕那添加該事件函數

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

    到這里一個簡易版的答題程序已經實現,效果如前面所示。

    四、總結

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

    源代碼

    # 導入本次項目用到的庫
    import tkinter
    from tkinter import *
    from tkinter.messagebox import *
    import random
     
    # 準備一個題庫列表
    object_list = [
    ('包了口香糖的紙巾屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('保鮮膜屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('變質的香腸屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('檳榔渣屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('剝掉的蛋殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('菜刀屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('茶葉渣應扔進哪個垃圾桶?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('吃剩的餅干渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('抽完煙的煙蒂是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('刀片屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('掉在地上的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('廢棄的食用油屬于?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('甘蔗渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('過期的化妝品是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('過期的貓糧屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('包裝藥片的鋁箔屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('喝茶剩下的茶葉渣是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('花生殼屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('壞掉的電腦屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('灰色塑料袋屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('回形針屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('雞骨頭屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('雞毛屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('家庭盆栽廢棄的樹葉是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('堿性電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('膠卷屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('舊涼席屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('舊圖書屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('空的滅火器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('老舊電視機屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('落發屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('沒用完的鉛筆屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('沒有泡過的茶葉屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('哪一類可進行資源再生利用?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('蘋果手機電池屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('破碎的碗碟屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('染發劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('殺蟲劑的容器屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('水果硬糖屬于哪一類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ('水銀溫度計屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('撕掉了的舊照片,應該丟到哪個垃圾桶內?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'B'), 
    ('塑料筷子屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('塑料玩具是什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'C'), 
    ('糖果包裝紙屬于什么垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'A'), 
    ('西瓜籽屬于哪類垃圾?', '其他垃圾', '有害垃圾', '可回收物', '廚余垃圾', 'D'), 
    ]
     
    # 定義一個判斷選項正確性的函數
    def main(values):
        # 全局引用num和score變量
        global num 
        global score
     
        # 如果選項和答案相等則答對了
        if s.get() == values[num][5]:
            showinfo("恭喜", "恭喜你答對了!")  # 提示你答對了
            score += 10  # 得分加10分
        # 如果選項和答案不相等則答錯了
        else:
            showinfo("遺憾", "遺憾你答錯了!")  # 提示你答錯了
        num = num + 1  # 記錄題號
        # 如果題號已經大于等于題目的總長度則需要進行結束并統計總分數
        if num >= len(values):
            showinfo("結果", f"全部題目做完了!\n您的最終得分為{score}分!")  # 提示題目做完了,總結出你的得分
            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')  # 設置初始值為'E',初始沒選中
     
    if __name__ == '__main__':
        root = tkinter.Tk()  # 創建tkinter對象
        root.title('垃圾分類答題考試')  # 設置標題
        root.geometry("500x200+500+300")   # 設置頁面的位置和長寬
        # 從題庫中隨機抽取10個題目作為考試題
        values = random.sample(object_list,10)
        # 創建一個字符串變量用來記錄選項值
        s = tkinter.StringVar()  
        s.set('E')  # 設置初始值為'E',初始沒選中
        # 設置初始題號和分值
        num = 0
        score = 0
        label = tkinter.Label(root, text=values[num][0])  # 用來顯示題目
        label.pack()
        # 創建第 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()
        # 創建第 2 個 Frame 組件
        f2 = Frame(root)  
        f2.pack()
        # 創建下一題的按鈕
        Button(f2, text='下一題', command=lambda:main(values)).pack(side=LEFT)
        # 默認顯示第一道題目
        
        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()

    “怎么使用Python和Tkinter實現一個垃圾分類答題應用程序”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    赤城县| 兴国县| 普兰县| 广水市| 名山县| 湖南省| 宁津县| 探索| 北海市| 微博| 邵阳市| 忻州市| 临桂县| 河北区| 涟水县| 喜德县| 新源县| 江门市| 嫩江县| 信宜市| 乐至县| 南川市| 霍城县| 乌鲁木齐县| 分宜县| 衡东县| 郧西县| 德兴市| 汶上县| 翁牛特旗| 武平县| 蒙城县| 上蔡县| 高安市| 松江区| 乳源| 山丹县| 安陆市| 太仆寺旗| 论坛| 繁昌县|