tkinter 开发的 算卦小软件|python

本文介绍了一个使用Python和Tkinter创建的简易GUI应用程序,该程序能够接收用户输入的数字,将其转换为八卦符号,并从网站抓取相应的卦辞进行解析和展示。程序涉及图形用户界面设计、网络请求和正则表达式数据抓取等技术。
# -*- 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()

效果图如下:(比较简陋)

python开发的真实星空显示软件 含真实恒星位置数据3144颗 代码讲解见: https://blog.youkuaiyun.com/xiaorang/article/details/106598307 数据格式例: {'long': 0.023278328898474372, 'lat': -0.09961466705757636, 'light': 46, 'const': 66}, {'long': 0.024870941840919196, 'lat': 0.2338062439126301, 'light': 55, 'const': 62}, {'long': 0.028107061526797, 'lat': 1.1204335039257496, 'light': 56, 'const': 18}, {'long': 0.03660100303760025, 'lat': 0.5077259659824991, 'light': 21, 'const': 1}, {'long': 0.04004802831028905, 'lat': 1.0323574005393255, 'light': 23, 'const': 18}, {'long': 0.03944444109507185, 'lat': 0.3178583859888262, 'light': 55, 'const': 62}, {'long': 0.040797071265367454, 'lat': -0.488478858963941, 'light': 54, 'const': 74}, {'long': 0.0410661312228549, 'lat': -0.798444499556106, 'light': 39, 'const': 64}, {'long': 0.043800486202076855, 'lat': 0.1945266317121166, 'light': 55, 'const': 66}, {'long': 0.045036755271142, 'lat': 0.804111967609767, 'light': 50, 'const': 1}, {'long': 0.043785947609407745, 'lat': -1.4350775693910554, 'light': 53, 'const': 58}, {'long': 0.04915283505929031, 'lat': -0.2699684886295715, 'light': 49, 'const': 21}, {'long': 0.050498187206605094, 'lat': -0.4851966800391031, 'light': 54, 'const': 74}, {'long': 0.05119631890740283, 'lat': -0.6131874860342564, 'light': 52, 'const': 74}, {'long': 0.05775584219505068, 'lat': 0.26500400429202875, 'light': 28, 'const': 62}, {'long': 0.05896303407877759, 'lat': 0.7162006931179011, 'light': 57, 'const': 1}, {'long': 0.06371905629046214, 'lat': 0.3526728525507925, 'light': 48, 'const': 62}, {'long': 0.06387905062299246, 'lat': -0.33043929519585447, 'light': 44, 'const': 21}, 代码解说详细的教程见: https://blog.youkuaiyun.com/xiaorang/article/details/106598307
这是一个VB6的IDE插件(Addin),使用VB6的IDE直接设计Python的界面。 Python和VB都是能让人快乐的编程语言,我使用了Python之后,很多自己使用的工具都使用Python开发或改了,因为最终实现的Python代码实在太短了(相比VB),有时候Python一行代码就可以实现VB一个函数的功能。 Python就是这种让人越用越开心的语言。 不过说实在,使用Python开发GUI界面还是麻烦了一些了,自带的标准库Tkinter使用起来非常简单,不过对于习惯了VB拖放控件完成界面设计的偶来说,还是不够人性化。TK也有一个工具叫GUI Builder,不过它使用Layout布局,不够直观,而且用起来很不爽。。 至于PyQt/wxPython等GUI库,尽管有可视化设计工具,但总感觉做一般的轻量级应用是杀鸡用牛刀, 而且不够环保,不够低碳,要带一个很大的库,需要目标机器上夜同样安装了PyQt/wxPython,做不了绿色软件。 所以最终的结果是我更喜欢Tkinter,用起来很简单,绿色环保,真正的跨平台,一个py文件到处运行(担心泄密就编译成pyc)。 很多人都认为TK的界面不够美观,不过我经过多次实验后发现导入Python自带的标准TTK主题库,界面非常Native,不输PyQt/wxPython。 此Addin默认启用TTK支持,也可选择关闭。 总而言之,轻量级GUI,TK+TTK足够。 使用此Addin,你可以不用一句代码就可以生成一个完整可运行的Python的GUI界面,支持2.X和3.X。 安装方法:将压缩包解压到你希望的目录,然后执行Setup.exe完成注册插件过程,打开VB6就可以用了。 在VB窗体上设计完成界面后(你可以大胆的设置各控件的属性,Addin尽量将其翻译为tkinter的控件属性),点工具栏上的VisualTkinter(图标为一片羽毛),再点'生成代码'按钮,即可生成可运行的Python代码,可以拷贝至剪贴板或保存至文件。 一般情况下你可以不用再改变tkinter的控件属性,但是如果你熟悉tkinter,需要更多的控制,可以一一核对各属性,并且修改,再生成代码。 当然除了用来设计界面外,此ADDIN内置的各控件属性列表可以做为编程参考,比较完整,除了极少数我认为大多数人都不用的属性外,属性定义基本上是我从官方的tkinter文档直接翻译的。 如果还没有VB6,网上找一个VB6精简版即可,不到20M,小巧玲珑。 代码已经在Github上托管,更新的版本可以在这上面找到,需求也可以在上面提: https://github.com/cdhigh/Visual-Tkinter-for-Python
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值