tkinter 開發的 算卦小軟件|python

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 22 15:12:43 2019

@author: weiping
"""
import tkinter as tk
import re
import requests 
import time

'''
0 坤、000
1 乾、111
2 兌、011
3 離、101
4 震、001
5 巽、110
6 坎、010
7 艮、100

lit =['000','111','011','101','001','110','010','100']

'''

root = tk.Tk()
root.geometry('1000x500')
root.title('算一卦')
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
headers = {'User-Agent': user_agent}  #請求
sg = 'sg'
xg = 'xg'


var = tk.IntVar()
l = tk.Entry(root,textvariable = var)
l.pack()
var.set('請想一個數字輸入')

st =1
    
def fr_del():
    global st,fr1,fr2,fr
    fr.pack_forget()
    fr1.pack_forget()
    fr2.pack_forget()
    var.set('請重新輸入一個數字')
    st = 1
def gua():
    global st

       
    try:
    
        while st<= 1 :
            global fr1,fr2,fr
            fr = tk.Frame(root)
            fr.pack()
            fr1 = tk.Frame(fr,width = 450,height = 300)
            fr1.pack(side = 'left')
            fr2 = tk.Frame(fr,width = 450,height = 300)
            fr2.pack(side = 'right')
            can = tk.Canvas(fr1,bg = 'red')
            st = st +1
            lit =['000','111','011','101','001','110','010','100'] 
            global sg,xg
            tt = l.get()
            print(type((tt)))
            
            def quyu(n):
                if n< 64:
                    a,b = divmod(n,8)
                else:
                    c,d = divmod(n,8)
                    a,b = quyu(c)
                return a,b
            
            def rand_time():
                a = time.localtime()
                def t(ti):
                    if ti % 2 != 0:
                        a1 = '1'
                    else:
                        a1 = '0'
                    return a1
                return t(a.tm_hour) + t(a.tm_min) + t(a.tm_sec)
            xg = rand_time()
            a,b = quyu(int(tt))
            print(a,b)
            for i in range(8):
                #if i == a :
                #    xg = lit[i]
                if i == b :
                    sg = lit[i] 
           
            for i in range(3):
                if xg[i] == '1':
                    rect1 = can.create_rectangle(150,(i+11)*10,150+80,(i+11)*10+3,fill = 'black')
                else:
                    rect11 = can.create_rectangle(150,(i+11)*10,150+30,(i+11)*10+3,fill = 'black')
                    rect12 = can.create_rectangle(200,(i+11)*10,200+30,(i+11)*10+3,fill = 'black')
            for i in range(3):
                if sg[i] == '1':
                    rect1 = can.create_rectangle(150,(i+14)*10,150+80,(i+14)*10+3,fill = 'black')
                else:
                    rect11 = can.create_rectangle(150,(i+14)*10,150+30,(i+14)*10+3,fill = 'black')
                    rect12 = can.create_rectangle(200,(i+14)*10,200+30,(i+14)*10+3,fill = 'black')
            can.pack()
            url1 = 'http://www.64gua.com/yj/jie1/'
            url2 = xg+sg
            url3 = '.asp'
            url = url1+url2+url3
            r = requests.get(url)
            r.encoding = 'GBk'
            p1 =  '(【原文】.*?)\<.*?\>\\r\\n'
            p2 = '(【譯文】.*?)\<.*?\>\\r\\n'
            p3 = '(《象》.*?)\<.*?\>\\r\\n'
            p4 = '(《象辭》.*?)\<.*?\>\\r\\n'
            
            ret0 = re.findall(p1,r.text)[0].strip()
            ret1 = re.findall(p2,r.text)[0].strip()
            ret2 = re.findall(p3,r.text)[0].strip()
            ret3 = re.findall(p4,r.text)[0].strip()
            ret = ret0 + '\n' + ret1 + '\n' +ret2 + '\n' + ret3
            guaci = tk.Label(fr2,text = ret,wraplength = 400,font = ('楷體',18),justify='left')
            guaci.pack()
    except(ValueError):
        tk.Label(root,text = '必須輸入數值,請重置!').pack()
        

tk.Label(root,text='建議以第一次爲準').pack()
b1 = tk.Button(root,text = '卦',command = gua)
b1.pack()
b2 = tk.Button(root,text = '重置', command = fr_del)
b2.pack()
root.mainloop()

效果圖如下:(比較簡陋)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章