zltzlt 发表于 2020-4-11 13:01:24

{:10_257:}长见识了,第一次看到这样学习 Python 的

zltzlt 发表于 2020-4-11 13:04:49

本帖最后由 zltzlt 于 2020-4-11 13:06 编辑

好,我给你一段之前写的代码

# -*- coding:utf-8 -*-
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
from os.path import isfile
from pynput.keyboard import Key, Controller
import pickle as pk


def new(event=None):
    global title
    global saved
    global filename
    title = "记事本 --- 未命名"
    saved = True
    root.title(title)
    filename = ''
    text.delete("1.0", END)


def enter(event):
    global title
    global saved
    text.edit_separator()
    if saved:
      list1 = list(title)
      list1.insert(8, "*")
      list1.extend(["*"])
      title = "".join(list1)
      root.title(title)
      saved = False


def open_file(event=None):
    global filename
    global title
    filename = filedialog.askopenfilename(title="打开文件",
                                          defaultextension=".txt",
                                          filetypes=[("Text File", ".txt"),
                                                   ("All File", ".*")])
    if filename:
      with open(filename, encoding="utf-8") as file:
            text.delete("1.0", END)
            text.insert("1.0", file.read())
      title = "记事本 --- " + filename
      root.title(title)


def save(event=None):
    global title
    global filename
    global saved
    if ((title == "*" and title[-1] == "*") and
            title != "记事本 --- *未命名*"):
      list1 = list(title)
      del list1
      del list1[-1]
      title = "".join(list1)
      root.title(title)
    if title == "记事本 --- 未命名" or title == "记事本 --- *未命名*":
      file_name = filedialog.asksaveasfilename(
            title="保存文件",
            defaultextension=".py",
            filetypes=[("Text File", ".txt"), ("All File", ".*")])
      if file_name:
            with open(file_name, "w") as file:
                file.write(text.get("1.0", END))
            title = "记事本 --- " + file_name
    else:
      with open(filename, "w") as file:
            file.write(text.get("1.0", END))
      title = "记事本 --- " + filename
    saved = True
    root.title(title)


def undo(event=None):
    global title
    global saved
    text.edit_undo()
    if saved:
      list1 = list(title)
      list1.insert(8, "*")
      list1.extend(["*"])
      title = "".join(list1)
      root.title(title)
      saved = False


def redo(event=None):
    global title
    global saved
    text.edit_redo()
    if saved:
      list1 = list(title)
      list1.insert(8, "*")
      list1.extend(["*"])
      title = "".join(list1)
      root.title(title)
      saved = False


def exit_program(event=None):
    if not saved:
      ok = messagebox.askquestion("询问", "您的文件还没有保存!是否保存文件后再退出?")
      if ok == "yes":
            save()
            root.quit()
    ok = messagebox.askquestion("询问", "您确定要退出吗?")
    if ok == "yes":
      root.quit()


def confirm():
    font_list.append(fontname.get(ACTIVE))
    mst.destroy()
    fontsize_dialog()


def confirm2():
    font_list.append(w.get())
    text.config(font=tuple(font_list))
    pk.dump(font_list, file=open("font.pkl", "wb"))
    m.destroy()


def fontname_dialog(event=None):
    global mst
    global fontname
    font_list.clear()
    mst = Toplevel(root)
    mst.title("调整字体")
    mst.resizable(False, False)

    frame = Frame(mst)
    frame.pack(side=TOP)

    fontname = Listbox(frame, width=30)
    fontname.pack(side=LEFT)

    confirmb = Button(mst, text="我已选择好了", width=25, command=confirm)
    confirmb.pack(side=BOTTOM)

    for each in ["楷体", "仿宋", "黑体"]:
      fontname.insert(END, each)

    mst.protocol("WM_DELETE_WINDOW", set_font)


def fontsize_dialog():
    global w
    global m
    m = Toplevel(root)
    m.title("调整字体大小")
    m.resizable(False, False)

    w = Scale(m, from_=2, to=72, length=400, orient=HORIZONTAL,
            tickinterval=10)
    w.pack()
    confirmb = Button(m, text="我已选择好了", width=25, command=confirm2)
    confirmb.pack(side=BOTTOM)

    m.protocol("WM_DELETE_WINDOW", set_font)


def set_font():
    fonttuple = tuple(pk.load(open("font.pkl", "rb")))
    text.config(font=fonttuple)


def copy(event=None):
    with kb.pressed(Key.ctrl):
      kb.press('c')
      kb.release('c')


def paste(event=None):
    with kb.pressed(Key.ctrl):
      kb.press('v')
      kb.release('v')


def cut(event=None):
    with kb.pressed(Key.ctrl):
      kb.press('x')
      kb.release('x')


title = "记事本 --- 未命名"
saved = True
filename = ''
mst = None
fontname = None
w = None
m = None
kb = Controller()

if not isfile("font.pkl"):
    pk.dump(("仿宋", 15), open("font.pkl", "wb"))

try:
    font = pk.load(open("font.pkl", "rb"))
except EOFError:
    pk.dump(("仿宋", 15), open("font.pkl", "wb"))
    font = pk.load(open("font.pkl", "rb"))

font_list = list(pk.load(open("font.pkl", "rb")))

root = Tk()
root.title(title)

mb = Menu(root)
filemenu = Menu(mb, tearoff=False)
filemenu.add_command(label="新建      Ctrl+N", command=new)
filemenu.add_command(label="打开      Ctrl+O", command=open_file)
filemenu.add_command(label="保存      Ctrl+S", command=save)
filemenu.add_separator()
filemenu.add_command(label="退出      Ctrl+Q", command=exit_program)
mb.add_cascade(label="文件 (F)", menu=filemenu)

editmenu = Menu(mb, tearoff=False)
editmenu.add_command(label="剪切      Ctrl+X", command=cut)
editmenu.add_command(label="复制      Ctrl+C", command=copy)
editmenu.add_command(label="粘贴      Ctrl+V", command=paste)
editmenu.add_command(label="撤销      Ctrl+Z", command=undo)
editmenu.add_command(label="重做      Ctrl+Y", command=redo)
mb.add_cascade(label="编辑 (E)", menu=editmenu)

adjustmenu = Menu(mb, tearoff=False)
adjustmenu.add_command(label="调整字体      Ctrl+F", command=fontname_dialog)
mb.add_cascade(label="调整 (A)", menu=adjustmenu)

sb = Scrollbar(root)
sb.pack(side=RIGHT, fill=Y)

text = Text(root, yscrollcommand=sb.set,
            font=tuple(font), undo=True, autoseparator=False,
            width=50, height=15)
text.pack(side=LEFT, expand=True)

sb.config(command=text.yview)
text.bind("<KeyRelease>", enter)

root.config(menu=mb)
# 不可调整窗口大小
root.resizable(False, False)
root.protocol("WM_DELETE_WINDOW", exit_program)

text.bind("<Control-KeyPress-n>", new)
text.bind("<Control-KeyPress-o>", open_file)
text.bind("<Control-KeyPress-s>", save)
text.bind("<Control-KeyPress-q>", exit_program)
text.bind("<Control-KeyPress-x>", cut)
text.bind("<Control-KeyPress-c>", copy)
text.bind("<Control-KeyPress-v>", paste)
text.bind("<Control-KeyPress-z>", undo)
text.bind("<Control-KeyPress-y>", redo)
text.bind("<Control-KeyPress-f>", fontname_dialog)

mainloop()

17791509357 发表于 2020-4-11 13:14:34

zltzlt 发表于 2020-4-11 13:04
好,我给你一段之前写的代码

备注都没有,备注呢,兄弟,还有这个是游戏代码还是其他的,还有名字呢,不然我学着会很累

编程鱼C 发表于 2020-4-11 13:15:27

17791509357 发表于 2020-4-11 13:14
备注都没有,备注呢,兄弟,还有这个是游戏代码还是其他的,还有名字呢,不然我学着会很累

{:10_306:}

17791509357 发表于 2020-4-11 13:24:04

zltzlt 发表于 2020-4-11 13:04
好,我给你一段之前写的代码

兄弟,从新发一个,有备注的,这个是什么代码,有名字,{:5_95:}

zltzlt 发表于 2020-4-11 13:24:57

17791509357 发表于 2020-4-11 13:24
兄弟,从新发一个,有备注的,这个是什么代码,有名字,

好吧,发个简单一点的,下面这段代码是模拟 Python Shell 交互模式的:

# -*- coding: utf-8 -*-
import traceback
import time

lines = []
is_multiple = False

print("----- Python -----\n小贴士:输入 %mutiple line 可以启动多行模式哦,连按两次 <Enter> 键退出多行模式~\n")

while True:
    try:
      while True:
            if is_multiple:
                command = input("... ")
                lines.append(command)
                if not command:
                  is_multiple = False
                  exec("\n".join(lines))
            else:
                lines = []
                command = input(">>> ")
                if command == "%mutiple line":
                  is_multiple = True
                  continue
                try:
                  ret = eval(command)
                  if ret is not None:
                        print(repr(ret))
                except SyntaxError:
                  try:
                        exec(command)
                  except Exception as e:
                        raise eval(f"{e.__class__.__name__}")(str(e)) from None
    except Exception as e:
      traceback.print_exc()
      time.sleep(0.05)

17791509357 发表于 2020-4-11 13:43:44

编程鱼C 发表于 2020-4-11 13:15


兄弟,飞机大战,代码给我,我研究下

编程鱼C 发表于 2020-4-11 14:00:14

17791509357 发表于 2020-4-11 13:43
兄弟,飞机大战,代码给我,我研究下

你自已去买

编程鱼C 发表于 2020-4-11 14:00:49

17791509357 发表于 2020-4-11 13:43
兄弟,飞机大战,代码给我,我研究下

我的是改进过的

17791509357 发表于 2020-4-11 14:13:07

编程鱼C 发表于 2020-4-11 14:00
我的是改进过的

代码这好像是机密,都不愿意发,我去淘宝看看

编程鱼C 发表于 2020-4-11 14:14:01

17791509357 发表于 2020-4-11 14:13
代码这好像是机密,都不愿意发,我去淘宝看看

因为他有音乐和图片(音乐发不了)有代码也没用

8178919 发表于 2020-4-11 15:12:09

emmm……

老八秘制 发表于 2020-4-11 15:24:37

编程鱼C 发表于 2020-4-11 14:14
因为他有音乐和图片(音乐发不了)有代码也没用

我这里有免费素材+源码要不要,顺便说下,刚学python的话建议还是慢慢学,直接去看大佬的代码看也看不懂,学也没学会,还不如踏踏实实脚踏实地慢慢学

Judie 发表于 2020-4-13 06:50:19

{:10_330:} 啊哈 真是有趣

Hello. 发表于 2020-4-13 07:51:48

生下来就会/{:10_327:}

hrp 发表于 2020-4-13 08:06:17

本帖最后由 hrp 于 2020-4-13 08:07 编辑

这里有一个我写的
https://fishc.com.cn/forum.php?mod=viewthread&tid=162829

17791509357 发表于 2020-4-13 16:19:19

hrp 发表于 2020-4-13 08:06
这里有一个我写的

谢谢,兄弟

17791509357 发表于 2020-4-13 16:20:51

Hello. 发表于 2020-4-13 07:51
生下来就会/

昨天我已经能看懂了,连续看了十多级课,怎么样{:5_109:}

Hello. 发表于 2020-4-13 16:25:05

17791509357 发表于 2020-4-13 16:20
昨天我已经能看懂了,连续看了十多级课,怎么样

你这么学习,效果能行吗

17791509357 发表于 2020-4-13 16:38:16

Hello. 发表于 2020-4-13 16:25
你这么学习,效果能行吗

就像以前第一次,接触电脑,连个拼音,都不知道在键盘哪里,时间久了不就会了,每天坚持学习和实践,慢慢就会搞定各种知识和问题,你觉得呢
页: 1 [2] 3
查看完整版本: 求助,哪位大神有python代码,我觉得直接看代码学习会更快你们觉得呢,