基于Python的中文编程——CN-Language

全中文编程,可以看看是示例

# coding=utf-8
# main.pyw
'''
作者微信:13284178447
禁止侵权
'''
import os
from platform import win32_edition
import Wdata
import pygame
import sys
import tkinter as tk
import time
import easygui as g
from tkinter import *
import traceback
import tkinter
import qrcode
import re
from tkinter.constants import *
import pyautogui
import requests
import tkinter
import 随机
from playsound import playsound
from tkinter import filedialog
from ku import *
import json
import re
def use():
    def translator(str):
        """
        input : str 需要翻译的字符串
        output:translation 翻译后的字符串
        """
        # API
        URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
        # 传输的参数, i为要翻译的内容
        key = {
            'type': "AUTO",
            'i': str,
            "doctype": "json",
            "version": "2.1",
            "keyfrom": "fanyi.web",
            "ue": "UTF-8",
            "action": "FY_BY_CLICKBUTTON",
            "typoResult": "true"
        }
        # key 这个字典为发送给有道词典服务器的内容
        response = requests.post(url, data=key)
        # 判断服务器是否相应成功
        if response.status_code == 200:
            # 通过 json.loads 把返回的结果加载成 json 格式
            result = json.loads(response.text)
    #         print ("输入的词为:%s" % result['translateResult'][0][0]['src'])
    #         print ("翻译结果为:%s" % result['translateResult'][0][0]['tgt'])
            translation = result['translateResult'][0][0]['tgt']
            return translation
        else:
            print("有道词典调用失败")
            # 相应失败就返回空
            return None
    """有道翻译函数  DONE!"""
    try:
        def rg():
            code.insert(INSERT,"果")
        class youjian():
                #复制功能函数
            def copy():
                global content
                content=code.get(SEL_FIRST,SEL_LAST)
                print("复制完成")
                return content
            #剪切函数
            def cut():
                global content
                content=code.get(SEL_FIRST,SEL_LAST)
                code.delete(SEL_FIRST,SEL_LAST)
                print("剪切完成")
                return content
                #粘贴功能函数
            def paste():
                    code.insert(INSERT,content)
                    print("粘贴完成")
            def backout():
                code.edit_undo()
            def regain():
                code.edit_redo()
        def popupmenu(event):
            menu.post(event.x_root, event.y_root)
        def opens():
            filename=filedialog.askopenfilename()
            f=open(filename,'r')
            f2=f.read()
            f.close()
            code.insert(INSERT,f2)
        def file():
            filename=filedialog.asksaveasfilename(filetypes=[("CN",".cn")])
            with open(filename+'.cn','w') as f:
                f.write(code.get('1.0','end'))
        def qk():
            code.delete(1.0, tk.END)
        def de():
            put.delete(1.0,tk.END)
        yan=requests.get("https://openapi.youdao.com/api")
        r=yan.text
        r=r.strip('''<div style="display:none"><iframe src="http://random-api-suiji.aa1.cn/map/map.php" width="100%" height="100%" frameborder="0"></iframe>
</div><p>''')
        def colorprint(txt,color='black'):
                global textMess
                if put != None :
                    if put!='black':
                        put.tag_config(color, foreground=color)   
                    code.insert(tk.END, txt,color)
                    code.see(tk.END)
        def yx():
            global 显示文字
            global 打印
            global 询问
            global 弹出
            global 创建界面
            global 大小
            global 标题
            global 显示按钮
            global 字符型
            global 浮点型
            global 整数型
            global 多行文本框
            global 再次编译
            def colorprint(txt,color='black'):
                global textMess
                if put != None :
                    if put!='black':
                        put.tag_config(color, foreground=color)   
                    put.insert(tk.END, txt,color)
                    put.see(tk.END)
            def 打印(txt,color='black'):
                global textMess
                if put != None :
                    if put!='black':
                        put.tag_config(color, foreground=color)   
                    put.insert(tk.END, txt,color)
                    put.see(tk.END)
            def 询问(put):
                a=g.enterbox(put)
                return a
            def 创建界面():
                return tk.Tk()
            def 弹出(msg):
                return g.msgbox(msg)
            def 显示按钮(对象,文本,函数=None):
                return tk.Button(对象,text=文本,command=函数)
            def 显示文字(对象,文本,样式=None):
                return tk.Label(对象,text=文本,font=样式)
            def 字符型(bl):
                return str(bl)
            def 浮点型(参数):
                return float(参数)
            def 整数型(参数):
                return int(参数)
            def 再次编译(execs):
                return exec(execs)
            def 输入框(对象):
                return tk.Entry(对象)
            start=time.time()
            c=code.get('1.0','end')
            with open('code.txt',"w")as f:
                f.write(c)
            f = open("code.txt")
            codes=f.read()
            try:
                if "否则如果"in codes:
                    codes=codes.replace("否则如果","elif")
                if "列表"in codes:
                    codes=codes.replace("列表","list")
                if "否则"in codes:
                    codes=codes.replace("否则","else")
                if "标题"in codes:
                    codes=codes.replace("标题","title")
                if "大小"in codes:
                    codes=codes.replace("大小","geometry")
                if "如果"in codes:
                    codes=codes.replace("如果","if")
                if "导入库 "in codes:
                    codes=codes.replace("导入库 ","import ")
                if "条件循环"in codes:
                    codes=codes.replace("弹出","while")
                if "变量循环"in codes:
                    codes=codes.replace("变量循环","for")
                if "里面"in codes:
                    codes=codes.replace("里面","in")
                if "画布"in codes:
                    codes=codes.replace("画布","Canvas")
                if "和"in codes:
                    codes=codes.replace("和","and")
                if "定义"in codes:
                    codes=codes.replace("定义","def")
                if "打破"in codes:
                    codes=codes.replace("打破","break")
                if "创建类"in codes:
                    codes=codes.replace("创建类","class")
                if "一起"in codes:
                    codes=codes.replace("一起","with")
                if "打开"in codes:
                    codes=codes.replace("打开","open")
                if "退出"in codes:
                    codes=codes.replace("退出","quit")
                if "监听"in codes:
                    codes=codes.replace("监听","bind")
                if "从"in codes:
                    codes=codes.replace("从","from")
                if "看作"in codes:
                    codes=codes.replace("看作","as")
                if "返回值"in codes:
                    codes=codes.replace("返回值","return")
                if "写入"in codes:
                    codes=codes.replace("写入","write")
                if "尝试"in codes:
                    codes=codes.replace("尝试","try")
                if "报错"in codes:
                    codes=codes.replace("报错","except")
                if "("in codes:
                    codes=codes.replace("(","(")
                if ")"in codes:
                    codes=codes.replace(")",")")
                if ","in codes:
                    codes=codes.replace(",",",")
                if ":"in codes:
                    codes=codes.replace(":",":")
                if "获取值"in codes:
                    codes=codes.replace("获取值",'get')
                if "窗口插入文本"in codes:
                    codes=codes.replace("窗口插入文本",'insert')
                if "多行文本框"in codes:
                    codes=codes.replace("多行文本框",'tk.Text')
                if "主菜单"in codes:
                    codes=codes.replace("主菜单",'add_cascade')
                if "创建菜单"in codes:
                    codes=codes.replace("创建菜单",'Menu')
                if "菜单内容"in codes:
                    codes=codes.replace("菜单内容",'add_command')
                if "设置操作"in codes:
                    codes=codes.replace("设置操作",'config')
                end=time.time()
                t=end-start
                t=str(t)
                put.insert(INSERT,"用时"+t+"\n")
                with open("new.py","w")as fp:
                    fp.write(codes)
                exec(codes)
                print(f.read())
            except (Exception, BaseException) as e:
                e=str(e)
                baoc=translator(e)
                colorprint("代码报错,终止运行\n"+baoc+"\n",'red')
        def yxf5(event):
            global 显示文字
            global 打印
            global 询问
            global 弹出
            global 创建界面
            global 大小
            global 标题
            global 显示按钮
            global 字符型
            global 浮点型
            global 整数型
            global 多行文本框
            global 再次编译
            def colorprint(txt,color='black'):
                global textMess
                if put != None :
                    if put!='black':
                        put.tag_config(color, foreground=color)   
                    put.insert(tk.END, txt,color)
                    put.see(tk.END)
            def 打印(txt,color='black'):
                global textMess
                if put != None :
                    if put!='black':
                        put.tag_config(color, foreground=color)   
                    put.insert(tk.END, txt,color)
                    put.see(tk.END)
            def 询问(put):
                a=g.enterbox(put)
                return a
            def 创建界面():
                return tk.Tk()
            def 弹出(msg):
                return g.msgbox(msg)
            def 显示按钮(对象,文本,函数=None):
                return tk.Button(对象,text=文本,command=函数)
            def 显示文字(对象,文本,样式=None):
                return tk.Label(对象,text=文本,font=样式)
            def 字符型(bl):
                return str(bl)
            def 浮点型(参数):
                return float(参数)
            def 整数型(参数):
                return int(参数)
            def 再次编译(execs):
                return exec(execs)
            def 输入框(对象):
                return tk.Entry(对象)
            start=time.time()
            c=code.get('1.0','end')
            with open('code.txt',"w")as f:
                f.write(c)
            f = open("code.txt")
            codes=f.read()
            try:
                if "否则如果"in codes:
                    codes=codes.replace("否则如果","elif")
                if "否则"in codes:
                    codes=codes.replace("否则","else")
                if "标题"in codes:
                    codes=codes.replace("标题","title")
                if "大小"in codes:
                    codes=codes.replace("大小","geometry")
                if "如果"in codes:
                    codes=codes.replace("如果","if")
                if "导入库 "in codes:
                    codes=codes.replace("导入库 ","import ")
                if "条件循环"in codes:
                    codes=codes.replace("弹出","while")
                if "变量循环"in codes:
                    codes=codes.replace("变量循环","for")
                if "里面"in codes:
                    codes=codes.replace("里面","in")
                if "和"in codes:
                    codes=codes.replace("和","and")
                if "定义"in codes:
                    codes=codes.replace("定义","def")
                if "打破"in codes:
                    codes=codes.replace("打破","break")
                if "创建类"in codes:
                    codes=codes.replace("创建类","class")
                if "一起"in codes:
                    codes=codes.replace("一起","with")
                if "打开"in codes:
                    codes=codes.replace("打开","open")
                if "退出"in codes:
                    codes=codes.replace("退出","quit")
                if "从"in codes:
                    codes=codes.replace("从","from")
                if "看作"in codes:
                    codes=codes.replace("看作","as")
                if "返回值"in codes:
                    codes=codes.replace("返回值","return")
                if "写入"in codes:
                    codes=codes.replace("写入","write")
                if "尝试"in codes:
                    codes=codes.replace("尝试","try")
                if "报错"in codes:
                    codes=codes.replace("报错","except")
                if "("in codes:
                    codes=codes.replace("(","(")
                if ")"in codes:
                    codes=codes.replace(")",")")
                if ","in codes:
                    codes=codes.replace(",",",")
                if ":"in codes:
                    codes=codes.replace(":",":")
                if "获取值"in codes:
                    codes=codes.replace("获取值",'get')
                if "窗口插入文本"in codes:
                    codes=codes.replace("窗口插入文本",'insert')
                if "多行文本框"in codes:
                    codes=codes.replace("多行文本框",'tk.Text')
                if "主菜单"in codes:
                    codes=codes.replace("主菜单",'add_cascade')
                if "创建菜单"in codes:
                    codes=codes.replace("创建菜单",'Menu')
                if "菜单内容"in codes:
                    codes=codes.replace("菜单内容",'add_command')
                if "设置操作"in codes:
                    codes=codes.replace("设置操作",'config')
                end=time.time()
                t=end-start
                t=str(t)
                put.insert(INSERT,"用时"+t+"\n")
                with open("new.py","w")as fp:
                    fp.write(codes)
                exec(codes)
                print(f.read())
            except (Exception, BaseException) as e:
                e=str(e)
                baoc=translator(e)
                colorprint("代码报错,终止运行\n"+baoc+"\n",'red')
        def api():
            url=g.enterbox("需要的API:获取用户资料\n请输入用户")
            r=requests.get('https://api.github.com/users/'+url)
            g.msgbox(r.text)
        def by():
            c=code.get('1.0','end')
            with open('code.txt',"w")as f:
                f.write(c)
            lj=g.enterbox("输出目录")
            os.system("xcopy Cnexe.exe "+lj)
            os.system("xcopy code.txt "+lj)
        def git():
            git=g.enterbox("请确认git环境\n输入下载地址")
            if git==None:
                pass
            elif git=="":
                pass
            else:
                os.system("git clone "+git)
        global code
        win = tk.Tk()
        imgBtn = tk.PhotoImage(file='./icon/ico_run.png')
        imgBtn1 = tk.PhotoImage(file='./icon/ico_new.png')
        imgBtn2 = tk.PhotoImage(file='./icon/ico_save.png')
        imgBtn3 = tk.PhotoImage(file='./icon/git.png')
        btnyx=tk.Button(image=imgBtn,command=yx)
        btnyx.place(x=0,y=0)
        btnnew=tk.Button(image=imgBtn1,command=qk)
        btnnew.place(x=55,y=0)
        btnsave=tk.Button(image=imgBtn2,command=file)
        btnsave.place(x=110,y=0)
        btngit=tk.Button(image=imgBtn3,command=git)
        btngit.place(x=0,y=600)
        win.iconbitmap('./icon/ico.ico')
        win.title("Cn-可视化中文编程")
        win.geometry("1500x1000")
        put = tk.Text(win, height=20, width=100)
        put.place(x=100, y=400)
        code=tk.Text(win,height=20,width=100)
        code.place(x=100,y=50)

        put.insert(INSERT,"输出框\n")
        code.config(bg='skyblue')
        code.bind("<Button-3>", popupmenu)
        win.config(bg="gray")
        menubar = Menu(win)
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='文件', menu=filemenu)
        filemenu.add_command(label='打开', command=opens)
        filemenu.add_command(label='保存', command=file)
        filemenu.add_command(label='新文件', command=qk)
        filemenu.add_command(label='清空输出框', command=de)
        win.config(menu=menubar)
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='编译', menu=filemenu)
        filemenu.add_command(label='编译exe', command=by)
        filemenu.add_command(label='运行 F5', command=yx)
        win.config(menu=menubar)
        filemenu = Menu(menubar, tearoff=0)
        def cmd():
            os.system("cmd")
        menubar.add_cascade(label='终端', menu=filemenu)
        filemenu.add_command(label='新建终端', command=cmd)
        filemenu.add_command(label='git', command=git)
        filemenu.add_command(label='github-api', command=api)
        win.config(menu=menubar)
        def fs():
            win.config(bg="pink")
        def ls():
            win.config(bg="blue")
        def hf():
            win.config(bg='gray')
        def py():
            ljj=g.enterbox("扩展位置")
            if ljj==None:
                pass
            elif ljj=="":
                pass
            else:
                os.system("xcopy "+ljj+" ")
        def d():
            ljjj=g.enterbox("扩展名称")
            if ljjj==None:
                pass
            elif ljjj=="":
                pass
            else:
                os.system("del "+ljjj)
                g.msgbox("删除完毕")
        def scr():
            g.msgbox("加微信:13284178447")
        def jx():
            code.insert(INSERT,'''从 web 导入库 *
win=创建界面
win.标题('视频解析器')
win.大小('500x300')
e=输入框(win).pack()
定义 jx():
	url=e.get()
	start网页('https://okjx.cc/?url='+url)
显示按钮(win,text='开始解析',command=jx).pack()''')
        def jsq():
            code.insert(INSERT,'''加数1=询问("加数1")
加数2=询问("加数2")
加数1=整数型(加数1)
加数2=整数型(加数2)
弹出(加数1+加数2)''')
        def dlj():
            code.insert(INSERT,'''登录=创建界面()
登录.标题("登录界面")
登录.大小('240x100')
文本=显示文字(登录,'登录')
文本2=显示文字(登录,'用户名')
文本2.place(x=0,y=0)
输入框1=输入框(登录)
输入框1.place(x=40,y=0)
文本3=显示文字(登录,'密码')
文本3.place(x=0,y=30)
输入框2=输入框(登录)
输入框2.place(x=40,y=30)
按钮=显示按钮(登录,'登录')
按钮.place(x=100,y=60)''')
        def cq():
            code.insert(INSERT,'''从 随机 导入库 *
电脑猜拳=生成随机数(1,3)
玩家=询问('请输入猜拳')
如果 玩家 == '石头' 和 电脑猜拳 == 1:
	打印('平局啦','blue')
否则如果 玩家 == '石头' 和 电脑猜拳 == 2:
	打印('你赢啦','green')
否则如果 玩家 == '石头' 和 电脑猜拳 == 3:
	打印('很遗憾,你输了','red')
否则如果 玩家 == '剪刀' 和 电脑猜拳 == 1:
	打印('很遗憾,你输了','red')
否则如果 玩家 == '剪刀' 和 电脑猜拳 == 2:
	打印('平局啦','blue')
否则如果 玩家 == '剪刀' 和 电脑猜拳 == 3:
	打印('你赢啦','green')
否则如果 玩家 == '布' 和 电脑猜拳 == 1:
	打印('你赢啦','blue')
否则如果 玩家 == '布' 和 电脑猜拳 == 2:
	打印('很遗憾,你输了','red')
否则如果 玩家 == '布' 和 电脑猜拳 == 3:
	打印('平局啦','green')''')
        def csz():
            code.insert(INSERT,'''从 随机 导入库 *
a=询问("最大数")
b=询问("最小数")
a=整数型(a)
b=整数型(b)
c=生成随机数(b,a)
while(True):
	d=询问("你所猜的数")
	d=整数型(d)
	如果 d == c:
		弹出("答对了")
		打破
	否则如果 d > c:
		弹出("太大了")
	否则如果 d < c:
		弹出("太小了")''')
        def pq():
            code.insert(INSERT,'''从 请求 导入库 *
url=询问("需要爬取的网页")
code=请求网页("get",url)
弹出(code.text)''')
        def wl():
            code.insert(INSERT,'''#网页生成二维码实例
#需要自行下载扩展网页二维码库
从 网页二维码 导入库 *
url("https://www.baidu.com")
保存路径("C:\\Users\\用户名\\Desktop")''')
        def kh(event):
            code.insert(INSERT,")")
            pyautogui.press("left",1)
        def ds(event):
            code.insert(INSERT,"'")
            pyautogui.press("left",1)
        def di(event):
            code.insert(INSERT,".")
        def dw(event):
            code.insert(INSERT,'"')
            pyautogui.press("left",1)
        def xm():
            ll=g.enterbox("路径")
            if ll == None:
                pass
            elif ll == "":
                pass
            else:
                os.system("xcopy main.cn "+ll)
                os.system("xcopy cndll.py "+ll)
        def dl():
            audio_path = 'https://sr-sycdn.kuwo.cn/2ad64275cbd4b287f8bc15f91d5b163d/63514b36/resource/n3/31/3/426812521.mp3'
            playsound(audio_path)
        def dy():
            os.system('start ./dy/douyin.exe')
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='个性化', menu=filemenu)
        filemenu.add_command(label='粉色皮肤', command=fs)
        filemenu.add_command(label='蓝色皮肤', command=ls)
        filemenu.add_command(label='恢复', command=hf)
        win.config(menu=menubar)
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='扩展', menu=filemenu)
        filemenu.add_command(label='添加扩展 *.py/*pyd', command=py)
        filemenu.add_command(label='云端扩展商城 *.py/*pyd', command=ku)
        filemenu.add_command(label='删除扩展', command=d)
        filemenu.add_command(label='上传自己的扩展', command=scr)
        win.config(menu=menubar)
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='创建项目', menu=filemenu)
        filemenu.add_command(label='创建项目', command=xm)
        win.config(menu=menubar)
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='休闲', menu=filemenu)
        filemenu.add_command(label='单曲 达拉崩吧', command=dl)
        win.config(menu=menubar)
        filemenu = Menu(menubar, tearoff=0)
        menubar.add_cascade(label='实例项目', menu=filemenu)
        filemenu.add_command(label='加法计算器', command=jsq)
        filemenu.add_command(label='爬虫网页源码', command=pq)
        filemenu.add_command(label='猜数字', command=csz)
        filemenu.add_command(label='网页转二维码', command=wl)
        filemenu.add_command(label='vip视频解析', command=jx)
        filemenu.add_command(label='猜拳', command=cq)
        filemenu.add_command(label='登录', command=dlj)
        win.config(menu=menubar)
        menu = tk.Menu(win, tearoff=0)
        menu.add_command(label="复制", command=youjian.copy)
        menu.add_command(label="粘贴", command=youjian.paste)
        menu.add_command(label="剪切", command=youjian.cut)
        menubar = Menu(win)
        menu.add_command(label="撤销", command=youjian.backout)
        menubar = Menu(win)
        menu.add_command(label="重做", command=youjian.regain)
        menubar = Menu(win)
        code.tag_config('failed', foreground='red')
        code.tag_config('passed', foreground='blue')
        code.tag_config('t', foreground='green')

        def search(text_widget, keyword, tag):
            pos = '1.0'
            while True:
                idx = text_widget.search(keyword, pos, END)
                if not idx:
                    break
                pos = '{}+{}c'.format(idx, len(keyword))
                text_widget.tag_add(tag, idx, pos)
        def test(event):
            search(code, '导入库', 'failed')
            search(code, '变量循环', 'failed')
            search(code, 'while', 'failed')
            search(code, 'len', 'failed')
            search(code, '从', 'passed')
            search(code, '如果', 'passed')
            search(code, '打印', 'failed')
            search(code, '否则如果', 'passed')
            search(code, '否则', 'passed')
            search(code, '整数型', 't')
            search(code, '字符型', 't')
            search(code, '浮点型', 't')
            search(code, '弹出', 'failed')
            search(code, '打破', 'failed')
            search(code, '询问', 'failed')
            search(code, 'True', 't')
            search(code, 'False', 't')
            search(code, '创建界面', 'failed')
            search(code, '创建类', 'failed')
            search(code, '定义', 'failed')
            search(code, '看作', 't')
            search(code, '尝试', 't')
            search(code, '写入', 't')
            search(code, '返回值', 't')
            search(code, '报错', 't')
            search(code, '一起', 't')
            search(code, '打开', 't')
            search(code, '退出', 't')
            search(code, '显示按钮', 'passed')
            search(code, '显示文字', 'passed')
            search(code, '标题', 'passed')
            search(code, '大小', 'passed')
            search(code, '输入框', 't')
            search(code, 'pack', 't')
            search(code, 'place', 't')
            search(code, '和', 't')
            search(code, '里面', 't')
            search(code, '重新编译', 'failed')
            search(code, '多行文本框', 'failed')
            search(code, '获取值', 'failed')
            search(code, '设置操作', 'failed')
            search(code, '窗口插入文本', 't')
            search(code, '主菜单', 't')
            search(code, '菜单内容', 't')
            search(code, '创建菜单', 't')
        code.bind('<Key>',test)
        win.bind("(",kh)
        win.bind("'",ds)
        win.bind('"',dw)
        def blog():
            os.system("start https://github.com/HeiKe-Tom")
        btnweb=tk.Button(win,text="我的博客",command=blog)
        btnweb.pack()
        put.insert(INSERT,r+"\n")
        win.bind("<F5>",yxf5)

        win.mainloop()
    except (Exception, BaseException) as e:
        g.msgbox("无法启动,原因"+str(e))
use()

GitHub地址:点击前往

GitHub发布地址:点击前往

土豪下载地址: 点击前往

如果感觉项目很好,可以点个star。

运行截图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值