日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

利用python+tkinter開發(fā)一個(gè)點(diǎn)名軟件

系統(tǒng) 1764 0

最近上課學(xué)生多名字記不住,名冊忘記了帶,要點(diǎn)名怎么辦,好久沒有寫代碼了,于是自己寫了個(gè)點(diǎn)名軟件,記錄下吧,第一次接觸TK也不是太熟悉,寫的不太好,記錄下源代碼 以后遇到要寫桌面軟件還是可以耍耍的。

?

tk:文檔? https://wiki.python.org/moin/TkInter

tk是python 自帶的一個(gè)GUI模塊

效果:

利用python+tkinter開發(fā)一個(gè)點(diǎn)名軟件_第1張圖片

?

背景圖:

利用python+tkinter開發(fā)一個(gè)點(diǎn)名軟件_第2張圖片

?

icon圖標(biāo):

?

源碼:

            
              from
            
             win32com.client 
            
              import
            
            
               Dispatch

            
            
              from
            
             tkinter 
            
              import
            
             *

            
              import
            
            
               tkinter as tk

            
            
              from
            
             PIL 
            
              import
            
            
               Image

            
            
              from
            
             PIL 
            
              import
            
            
               ImageTk

            
            
              import
            
            
               os

            
            
              import
            
            
               re

            
            
              import
            
            
               random

            
            
              from
            
             threading 
            
              import
            
            
               Thread

            
            
              import
            
            
               pythoncom

            
            
              import
            
            
               time

stu_path 
            
            = 
            
              "
            
            
              名單.txt
            
            
              "
            
            
              #
            
            
               學(xué)生名單路徑
            
            
              def
            
            
               speaker(str):
    
            
            
              """
            
            
              
    語音播報(bào)
    :param str: 需要播放語音的文字
    
            
            
              """
            
            
              
    speaker 
            
            = Dispatch(
            
              "
            
            
              SAPI.SpVoice
            
            
              "
            
            
              )
    speaker.Speak(str)



            
            
              class
            
            
               Rollllcall():
    
            
            
              def
            
            
              __init__
            
            
              (self):
        self.win 
            
            =
            
               Tk()
        self.win.title(
            
            
              "
            
            
              Python課堂點(diǎn)名器
            
            
              "
            
            
              )
        self.win.iconbitmap(
            
            
              "
            
            
              image/icon.ico
            
            
              "
            
            
              )
        self.win.geometry(
            
            
              "
            
            
              750x450
            
            
              "
            
            
              )
        self.win.resizable(False, False)  
            
            
              #
            
            
               不允許放大窗口,避免放大導(dǎo)致布局變形帶來的麻煩
            
            
        self.start = False  
            
              #
            
            
               開始按鈕的狀態(tài)
            
            
              #
            
            
               增加背景圖片
            
            
        img = Image.open(
            
              '
            
            
              image/back.jpg
            
            
              '
            
            
              )
        img 
            
            = ImageTk.PhotoImage(img, size=(650, 450
            
              ))
        theLabel 
            
            = tk.Label(self.win,  
            
              #
            
            
               綁定到一個(gè)框架
            
            
              #
            
            
               justify=tk.LEFT,  # 對齊方式
            
            
                            image=img,  
            
              #
            
            
               加入圖片
            
            
                            compound=tk.CENTER,  
            
              #
            
            
               關(guān)鍵:設(shè)置為背景圖片
            
            
                            font=(
            
              "
            
            
              華文行楷
            
            
              "
            
            , 20),  
            
              #
            
            
               字體和字號
            
            
                            fg=
            
              "
            
            
              white
            
            
              "
            
            
              ,
                            )  
            
            
              #
            
            
               前景色
            
            
        theLabel.place(x=0, y=0, relwidth=1, relheight=1
            
              )
        self.var 
            
            = tk.StringVar()  
            
              #
            
            
               儲(chǔ)存文字的類
            
            
        self.var.set(
            
              "
            
            
              別緊張
            
            
              "
            
            )  
            
              #
            
            
               設(shè)置文字
            
            
        NameLabel = tk.Label(self.win, textvariable=self.var,  
            
              #
            
            
               綁定到一個(gè)框架
            
            
                             justify=tk.LEFT,  
            
              #
            
            
               對齊方式
            
            
                             compound=tk.CENTER,  
            
              #
            
            
               關(guān)鍵:設(shè)置為背景圖片
            
            
                             font=(
            
              "
            
            
              華文行楷
            
            
              "
            
            , 35),  
            
              #
            
            
               字體和字號
            
            
                             fg=
            
              "
            
            
              SeaGreen
            
            
              "
            
            
              ,
                             width
            
            =10
            
              ,
                             )  
            
            
              #
            
            
               前景色
            
            
        NameLabel.place(x=280, y=100
            
              )

        
            
            
              #
            
            
               多選框
            
            
        self.checkVar =
            
               IntVar()
        Checkbutton(self.win, text
            
            =
            
              "
            
            
              語音播放
            
            
              "
            
            , variable=
            
              self.checkVar,
                    onvalue
            
            =1, offvalue=0, height=0, width=0).place(x=170, y=410
            
              )
        tk.Button(self.win, text
            
            =
            
              '
            
            
              編輯學(xué)生名單
            
            
              '
            
            , height=0, width=0, command=self.pop_win).place(x=520, y=408
            
              )

        self.theButton 
            
            = tk.Button(self.win, text=
            
              "
            
            
              開始
            
            
              "
            
            , font=(
            
              "
            
            
              華文行楷
            
            
              "
            
            , 13), fg=
            
              "
            
            
              SeaGreen
            
            
              "
            
            , width=20
            
              ,
                                   command
            
            =
            
              self.callback)
        self.theButton.place(x
            
            =300, y=360)  
            
              #
            
            
               調(diào)整按鈕的位置
            
            
                      self.win.mainloop()

    
            
            
              def
            
            
               save_names(self, pop, t):
        
            
            
              """
            
            
              
        保存名單內(nèi)容
        :param win: #彈出窗
        :param t: 文本框?qū)ο?
        
            
            
              """
            
            
              
        names 
            
            = t.get(0.0, 
            
              "
            
            
              end
            
            
              "
            
            
              )
        
            
            
              if
            
             re.search(
            
              "
            
            
            
              "
            
            
              , names):
            textlabel 
            
            = tk.Label(pop, text=
            
              "
            
            
              注意:名單不能使用中文逗號分隔
            
            
              "
            
            , font=(
            
              "
            
            
              華文行楷
            
            
              "
            
            , 12),  
            
              #
            
            
               字體和字號
            
            
                                 fg=
            
              "
            
            
              red
            
            
              "
            
            
              , )
            textlabel.place(y
            
            =190, x=10
            
              )
        
            
            
              else
            
            
              :
            with open(stu_path, 
            
            
              "
            
            
              w
            
            
              "
            
            , encoding=
            
              "
            
            
              utf-8
            
            
              "
            
            
              ) as f:
                f.write(names)
            pop.destroy()

    
            
            
              #
            
            
               編輯學(xué)生姓名
            
            
              def
            
            
               pop_win(self):
        pop 
            
            = Tk(className=
            
              '
            
            
              學(xué)生名單編輯
            
            
              '
            
            )  
            
              #
            
            
               彈出框框名
            
            
        pop.geometry(
            
              '
            
            
              450x250
            
            
              '
            
            )  
            
              #
            
            
               設(shè)置彈出框的大小 w x h
            
            
        pop.iconbitmap(
            
              "
            
            
              image/icon.ico
            
            
              "
            
            
              )
        pop.resizable(False, False)

        
            
            
              #
            
            
               用來編輯名單的文本框
            
            
        t = tk.Text(pop, width=61, height=
            
              '
            
            
              10
            
            
              '
            
            
              )
        t.place(x
            
            =10, y=10
            
              )
        
            
            
              #
            
            
               判斷文件存不存在
            
            
        result =
            
               os.path.exists(stu_path)
        
            
            
              if
            
            
               result:
            
            
            
              #
            
            
               存在
            
            
            with open(stu_path, 
            
              "
            
            
              r
            
            
              "
            
            , encoding=
            
              '
            
            
              utf-8
            
            
              '
            
            
              ) as f:
                names 
            
            = f.read().strip(
            
              "
            
            
              \n\r\t
            
            
              "
            
            
              )
                t.insert(
            
            
              "
            
            
              end
            
            
              "
            
            
              , names)

        textlabel 
            
            = tk.Label(pop, text=
            
              "
            
            
              學(xué)生名單請以,(英文狀態(tài))的逗號分隔:\n如:劉亦菲,周迅
            
            
              "
            
            , font=(
            
              "
            
            
              華文行楷
            
            
              "
            
            , 12),  
            
              #
            
            
               字體和字號
            
            
                             fg=
            
              "
            
            
              SeaGreen
            
            
              "
            
            
              , )
        textlabel.place(y
            
            =150, x=10
            
              )

        
            
            
              #
            
            
               點(diǎn)擊確定保存數(shù)據(jù)
            
            
        tk.Button(pop, text=
            
              '
            
            
              確定
            
            
              '
            
            , height=0, width=0, command=
            
              lambda
            
            : self.save_names(pop, t)).place(y=200, x=340
            
              )
        tk.Button(pop, text
            
            =
            
              '
            
            
              取消
            
            
              '
            
            , height=0, width=0, command=pop.destroy).place(y=200, x=400
            
              )

    
            
            
              def
            
            
               callback(self):
        
            
            
              #
            
            
               改變開始按鈕的狀態(tài)
            
            
        self.start = False 
            
              if
            
             self.start 
            
              else
            
            
               True
        
            
            
              #
            
            
               開始隨機(jī)名單之后修改按鈕上的文字
            
            
        self.theButton[
            
              "
            
            
              text
            
            
              "
            
            ] = 
            
              "
            
            
              就你了
            
            
              "
            
            
              #
            
            
               開啟一個(gè)子線程去做操作隨機(jī)名字,以及語言播報(bào)
            
            
        self.t = Thread(target=self.mod_stu_name, args=
            
              (self.var, self.checkVar))
        self.t.start()

    
            
            
              def
            
            
               mod_stu_name(self, var, checkVar):
        
            
            
              #
            
            
               隨機(jī)讀取名單中的一個(gè)
            
            
        pythoncom.CoInitialize()  
            
              #
            
            
               子線程中調(diào)用win32com 語音播放需要設(shè)置這一行
            
            
              if
            
            
              not
            
            
               os.path.exists(stu_path):
            var.set(
            
            
              "
            
            
              請?zhí)砑用麊?
            
            
              "
            
            
              )
            
            
            
              return
            
            
               None
        with open(stu_path, 
            
            
              "
            
            
              r
            
            
              "
            
            , encoding=
            
              "
            
            
              utf-8
            
            
              "
            
            
              ) as f:
            names 
            
            = f.read().strip(
            
              "
            
            
              \n\t\r,
            
            
              "
            
            
              )
        
            
            
              if
            
            
              not
            
            
               names:
            var.set(
            
            
              "
            
            
              請?zhí)砑用麊?
            
            
              "
            
            
              )
            
            
            
              return
            
            
               None
        name_list 
            
            = names.split(
            
              "
            
            
              ,
            
            
              "
            
            
              )

        random_name 
            
            = 
            
              ""
            
            
              while
            
            
               self.start:
            random_name 
            
            =
            
               random.choice(name_list)
            var.set(random_name)  
            
            
              #
            
            
               設(shè)置名字隨機(jī)出現(xiàn)
            
            
            time.sleep(0.1
            
              )
        self.theButton[
            
            
              "
            
            
              text
            
            
              "
            
            ] = 
            
              "
            
            
              開始
            
            
              "
            
            
              #
            
            
               選中之后將按鈕重新修改成 開始
            
            
              #
            
            
               語音播報(bào)
            
            
              if
            
             checkVar.get() == 1
            
              :
            speaker(random_name)



            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :
    Rollllcall()
            
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 丹巴县| 灌阳县| 伊通| 滕州市| 海林市| 林州市| 贵德县| 新乡县| 长治县| 通化县| 杭锦旗| 崇文区| 洛扎县| 六枝特区| 大田县| 双江| 图木舒克市| 汶上县| 台湾省| 丹阳市| 武功县| 根河市| 永新县| 清水县| 交口县| 咸丰县| 确山县| 旬邑县| 甘泉县| 中宁县| 精河县| 清水河县| 白朗县| 大厂| 图木舒克市| 中宁县| 上杭县| 松江区| 吴旗县| 临泉县| 城市|