2019年11月14日 星期四

連續字輸出在pdf

# 匯入模組
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
import reportlab.lib.units as unit
import reportlab.lib.pagesizes as pagesizes

# register font
pdfmetrics.registerFont(UnicodeCIDFont("HeiseiKakuGo-W5"))

# create save pdf
pdf = canvas.Canvas("myfirst.pdf", pagesize=pagesizes.A4) #指定名稱和大小
title="運動大雜燴"
for word in title:
    pdf.setFont("HeiseiKakuGo-W5", 210*unit.mm)
    h=(297-210)/2 * unit.mm
    pdf.drawString(0 * unit.mm, h, word) #pdf 內容及大小
    pdf.showPage()   #換頁
pdf.save()

2019年11月10日 星期日

製作pdf

# 匯入模組
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
import reportlab.lib.units as unit
import reportlab.lib.pagesizes as pagesizes

# register font
pdfmetrics.registerFont(UnicodeCIDFont("HeiseiKakuGo-W5"))

# create save pdf
pdf = canvas.Canvas("myfirst.pdf", pagesize=pagesizes.A4) #指定名稱和大小
pdf.setFont("HeiseiKakuGo-W5", 14)
pdf.drawString(100 * unit.mm, 2 * unit.mm, "第一個PDF") #pdf 內容及大小
pdf.save()

============
匯入pdf模組(reportlab) 五類
1.canvas   ==>pdf 的頁面名稱
2.regiterfont   ==>UnitcodeCIDFont
3.setfont      ==>
4.unit          ==>
5.pagesize   ===>紙張大小

2019年11月5日 星期二

繪圖(一)

import tkinter as tk
root=tk.Tk()
root.geometry("600x400")

canvas=tk.Canvas(root,width=600,height=400,bg="white")
canvas.place(x=0,y=0)

canvas.create_oval(300-60,200-20,300+20,200+20)
root.mainloop()

視窗形式 驗證是否輸入為四位數(二)

輸入數字加右框
加入
rirekibox.insert(tk.END,b+"\n")

rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=400,y=0,width=200,height=400)



import tkinter as tk
import tkinter.messagebox as tmsg
import random

def ButtonClick():
    #a=[random.randint(1,9),random.randint(1,9),random.randint(1,9),random.randint(1,9),]
    b=editbox_1.get()
    
    if (len(b)!=4):
        tmsg.showerror("錯誤","請重新輸入")
    else:
        kazuok=True
        for i in range(4):
            if (b[i]>"9" or b[i]<"0"):
                tmsg.showerror("錯誤","請重新輸入")
                kazuok=False
                break
        if kazuok:
            #tmsg.showinfo("你輸入的文字",b)
            rirekibox.insert(tk.END,b+"\n")
root=tk.Tk()
root.title("猜數字遊戲")
root.geometry("600x400")
label_1=tk.Label(root,text="請輸入數字",font=("Helvetica",14))
label_1.place(x=20,y=20)

editbox_1=tk.Entry(width=4,font=("Helvetica",14))
editbox_1.place(x=150,y=20)

button_1=tk.Button(root,text="確認",font=("Helvetica",14),command=ButtonClick)
button_1.place(x=150,y=60)

rirekibox=tk.Text(root,font=("Helvetica",14))
rirekibox.place(x=400,y=0,width=200,height=400)
root.mainloop()

視窗形式 驗證是否輸入為四位數

import tkinter as tk
import tkinter.messagebox as tmsg
import random

def ButtonClick():
    #a=[random.randint(1,9),random.randint(1,9),random.randint(1,9),random.randint(1,9),]
    b=editbox_1.get()
   
    if (len(b)!=4):
        tmsg.showerror("錯誤","請重新輸入")
    else:
        kazuok=True
        for i in range(4):
            if (b[i]>"9" or b[i]<"0"):
                tmsg.showerror("錯誤","請重新輸入")
                kazuok=False
                break
        if kazuok:
            tmsg.showinfo("你輸入的文字",b)
root=tk.Tk()
root.title("猜數字遊戲")
root.geometry("400x200")
label_1=tk.Label(root,text="請輸入數字",font=("Helvetica",14))
label_1.place(x=20,y=20)

editbox_1=tk.Entry(width=4,font=("Helvetica",14))
editbox_1.place(x=150,y=20)

button_1=tk.Button(root,text="確認",font=("Helvetica",14),command=ButtonClick)
button_1.place(x=150,y=60)

root.mainloop()

2019年11月4日 星期一

guess number

# coding:utf-8
import random
import tkinter as tk
import tkinter.messagebox as tmsg


def ButtonClick():
   
    b = editbox1.get()

   
    #判斷是否為4位數
    isok = False
    if len(b) != 4:
        tmsg.showerror("錯誤", "請填4個數字")
    else:
        kazuok = True
        for i in range(4):
            if (b[i] <"0") or (b[i] > "9") :
                tmsg.showerror("錯誤", "不是數字")
                kazuok = False
                break
        if kazuok :
            isok = True

    if isok :
        # 當輸入為4位數
        # hit 判定
        hit = 0
        for i in range(4):
          if a[i] == int(b[i]):
            hit = hit + 1

        # blow 判定
        blow = 0
        for j in range(4):
          for i in range(4):
            if (int(b[j]) == a[i]) and (a[i] != int(b[i])) and (a[j] != int(b[j])):
              blow = blow + 1
              break
           
        #當 hit==4
        if hit == 4:
            tmsg.showinfo("猜中了", "恭喜。猜中了")
            # 終了
            root.destroy()
        else:
            # hit and blow 的題示
            tmsg.showinfo("提示", "Hit " + str(hit) + "/" + "Blow " + str(blow))

adpated from python 入門教室

# 取亂數
a = [random.randint(0, 9),
     random.randint(0, 9),
     random.randint(0, 9),
     random.randint(0, 9)]



root = tk.Tk()
root.geometry("400x150")
root.title("猜數字遊字")


label1 = tk.Label(root, text="輸入數字", font=("Helvetica", 14))
label1.place(x = 20, y = 20)

label2=tk.Label(root,text=a,font=("Helvetica",14))
label2.place(x=20,y=120)


editbox1 = tk.Entry(width = 4, font=("Helvetica", 28))
editbox1.place(x = 120, y = 60)


button1 = tk.Button(root, text = "確定", font=("Helvetica", 14), command=ButtonClick)
button1.place(x = 220, y = 60)


root.mainloop()

2019年11月3日 星期日

輸入五次成績

輸入五次成績 且大於100, 小於0 則重新輸入
score_list=[0]*5
for i in range(0,5):
    score=int(input("請輸入你的成績"))
    check=True
    while check:
        if (score>100 or score<0):
            print("請重新輸入你的成績")
            score=int(input("請輸入你的成績"))
        else:
            check=False
    score_list[i]=score
print("你的五次成績分數是{}".format(score_list))