这个好实现,就是字体大小问题
from tkinter.filedialog import askopenfilename as aof,asksaveasfilename as asf
from tkinter.messagebox import askyesno as askyn
import tkinter as tk
fontname = ...
writer = tk.Tk()
display = tk.Tk()
widgets = []
text = tk.Text(writer)
text.grid(row=0,column=0)
cont = ''
def read_md(file):
with open(file) as f:
return f.read()
def write_md(file,cont):
with open(file,'w') as f:
f.write(cont)
def clear():
for i in widgets:
i.grid_forget()
def render_md():
display.update()
clear()
l = 0
for i in cont.split('\n'):
if(i.startswith('# ')):
lb = tk.Label(display,text=i[2:],font=(fontname,40,'bold'))
elif(i.startswith('## ')):
lb = tk.Label(display,text=i[3:],font=(fontname,35,'bold'))
elif(i.startswith('### ')):
lb = tk.Label(display,text=i[4:],font=(fontname,30,'bold'))
elif(i.startswith('#### ')):
lb = tk.Label(display,text=i[5:],font=(fontname,25,'bold'))
elif(i.startswith('##### ')):
lb = tk.Label(display,text=i[6:],font=(fontname,20,'bold'))
elif(i.startswith('###### ')):
lb = tk.Label(display,text=i[7:],font=(fontname,15,'bold'))
else:
lb = tk.Label(display,text=i,font=(fontname,15,''))
lb.grid(row=l,column=0,sticky='w')
widgets.append(lb)
l += 1
def update_writer():
global cont
writer.update()
cont = text.get(0.0,tk.END)
def main():
global cont
writer.title('writer')
display.title('displayer')
file = aof(title='open a markdown file')
if(file):
cont = read_md(file)
text.insert(0.0,cont)
while(1):
try:
update_writer()
render_md()
except:
try:
writer.destroy()
except:
try:
display.destroy()
except:
tk.Tk().withdraw()
if(file):
write_md(file,cont)
else:
while(1):
file = asf(title='save as ...')
if(not file):
if(not askyn('Do you want to keep this new document?','Do you want to keep this new document?')):
exit()
write_md(file,cont)
if(__name__ == '__main__'):
main()
fontname
为渲染markdown使用的字体,请自行选择。
这里简单说一下,tkinter.Label
中的形参里有一个text
,是一个三元组,第一项是字体,第二项是字号,第三项是格式,有bold
、italic
、underline
等,用空格分割。
《python实现markdown编辑器-3》
python实现markdown编辑器前言开始markdown文件读取:标题前言开始markdown文件读取: import tkinter as tk def read_md(file): with open(file) as f: return f.read() def write_md(file,cont): with open(file,'w') as f: f.write(cont)非常易懂,这里不解释,如果看不懂,那还不如不看这篇文章,这篇文章的技术含量略高
其余使用tkinter,主要因为只会tkinter,wx和pyqt5不会用
什么!你没有tkinter!没关系,我的ubuntu也没有。。。
sudo apt-get install python3-tkinter
为什么?你也不看看pip能不能用(pip无法
注:Qt 是指 C++ Qt,PyQt 就是指 PyQt
在 Qt 和 PyQt 中的 QTextBrowser、QTextEdit等控件都有一个函数:
ui->XXX->setMarkdown("XXX"); // Qt
XXX.setMarkdown("XXX"); # PyQt
那么能不能用呢?当然是可以的,下面是一个示例:
动手写Python程序将图片嵌入Markdown
理想很丰满,现实很骨感,根据CSDN博客测试,他的编辑器无法接受太大的Markdown文本,测试500KB的文本已经有了图片显示不全的问题,这里提到的方法大家看看就好o(╥﹏╥)o,或许可以考虑下图片压缩
1 前情提要
写技术文档或者做个简单的笔记用Markdown简直在舒服不过了,但是Markdown的图片插入缺非常让人难受。目前Markdown...
### 安装Python
要使用Python,首先需要安装它。您可以前往[Python官网](https://www.python.org/)下载最新版本的Python。选择合适的版本(如Python 3.x)并进行安装。
### 使用Python
一旦安装完成,就可以开始使用Python了。有几种使用Python的方法:
- 在命令行中输入Python命令
- 使用文本编辑器(如Sublime Text)编写Python代码并运行
- 使用Python解释器交互式地输入和执行代码
要在命令行中使用Python,请在命令行窗口中输入`python`并按回车键。这将打开Python解释器,您可以在其中输入Python代码并立即看到结果。例如:
$ python
>>> print("Hello, World!")
Hello, World!
要使用文本编辑器编写Python代码,请打开文本编辑器并创建一个新文件。将文件保存为`.py`文件(例如`hello.py`),并在文件中输入Python代码。然后,在命令行中使用`python`命令运行该文件:
$ python hello.py
Hello, World!
### Python基础知识
Python是一种面向对象的编程语言。