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

python3.6 tkinter實現屏保小程序

系統 1775 0

本文實例為大家分享了python3.6 tkinter實現屏保小程序,供大家參考,具體內容如下

該小程序是在閑著沒事的時候,隨便寫的,就當打發無聊了。

該程序是用python3.6寫的,調用了python中的tkinter的庫(*python2x與python3x的thinter有很多不同的地方,一定要特別注意!!!)

            
from random import randint
from tkinter import *

class Randball():
  def __init__(self,canvas,scrnwidth,scrnheight):
    #初始化畫布
    self.canvas = canvas
    #初始化球的圓心坐標
    self.x_pos = randint(50,int(scrnwidth))#X軸的坐標 randint 隨機產生一個范圍內的整數
    self.y_pos = randint(50,int(scrnheight))#Y軸的坐標
    #球的移動距離
    self.x_move = 10
    self.y_move = 10
    #整個屏幕的高和寬
    self.scrnwidth =scrnwidth
    self.scrnheight =scrnheight
    #初始化球的半徑
    self.randius = randint(10,80)
    #隨機產生球的顏色
    rc = lambda : randint(0,255)
    self.color = '#%02x%02x%02x'%(rc(),rc(),rc())
  def create_ball(self):
    #計算得到用于創建球的四個坐標
    x1 = self.x_pos - self.randius
    y1 = self.y_pos - self.randius
    x2 = self.x_pos + self.randius
    y2 = self.y_pos + self.randius
    #畫球
    self.item =self.canvas.create_oval(x1,y1,x2,y2,fill = self.color,outline = self.color)

  def move_ball(self):
    #球按照指定距離移動,如果碰到障礙就向相反的方向運動
    self.x_pos += self.x_move
    self.y_pos += self.y_move
    if self.x_pos >= self.scrnwidth - self.randius:
      self.x_move = -self.x_move
    elif self.y_pos >= self.scrnheight - self.randius:
      self.y_move = -self.y_move
    elif self.x_pos < self.randius:
      self.x_move = abs(self.x_move)
    elif self.y_pos < self.randius:
      self.y_move = abs(self.y_move)
    self.canvas.move(self.item,self.x_move,self.y_move)


class Screensaver():
  balls = []
  def __init__(self,ball_nums):
    self.win = Tk()
    self.width = self.win.winfo_screenwidth()
    self.height = self.win.winfo_screenheight()
    self.win.overrideredirect(True)
    self.win.attributes('-alpha',1)
    #綁定事件,有任何動作退出屏保
    self.win.bind('
            
              ',self.exit_screensaver)
    self.win.bind('
              
                ',self.exit_screensaver )
    self.canvas = Canvas(self.win,width = self.width,height = self.height,bg="#FFFFFF")#背景 顏色自己隨便調整,至于啥顏色就看自己的心情了
    self.canvas.pack()


    for i in range(0,ball_nums):
        ball = Randball(self.canvas,scrnwidth=self.width,scrnheight=self.height)
        ball.create_ball()
        self.balls.append(ball)
    self.run_screensaver()
    self.win.mainloop()
  def run_screensaver(self):
    for ball in self.balls:
      ball.move_ball()
    self.canvas.after(30,self.run_screensaver)
  def exit_screensaver(self,event):
    self.win.destroy()

def main():
  Screensaver(30)#屏保上球的個數

if __name__=='__main__':
  main()
              
            
          

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 枝江市| 邵阳县| 达拉特旗| 汾阳市| 黄骅市| 皮山县| 文登市| 津市市| 长治县| 芜湖县| 浦东新区| 静安区| 报价| 宜宾县| 突泉县| 吉木萨尔县| 金秀| 衡山县| 凌海市| 麻江县| 文水县| 南京市| 鸡西市| 揭西县| 高台县| 扎赉特旗| 淳安县| 进贤县| 高唐县| 阳新县| 南华县| 安塞县| 景洪市| 洪雅县| 绥芬河市| 鄂托克前旗| 额济纳旗| 阿克陶县| 南宫市| 额尔古纳市| 多伦县|