python GUI(tkinter)
事件起因:由于下载了一个10000常用单词,需要背单词,但是word格式背单词看着很不舒服,所以就写了一个小代码,背单词用,这个版本是0.1版的,也就是啥也没有,基本功能也不全的,未来如果脑袋不抽的话也不会有后续了。。。。。。
之后,踩了一个坑,需要mark一下:
第一个坑就是关于LabelFrame,这个东西是真的坑,不要把它当成是Label,要当成Frame。
不多bibi,上代码。
'''
import numpy as np
from tkinter import *
from tkinter import ttk
import docx
import tkinter.messagebox
import docx
这里面还有东西没做:
- log中如果修改了那个单词是知道还是不知道,需要进行index的删除工作,know和unknow的单词转存工作没有做。
- 就是现在是必须先点击start之后才可以继续下去,这个地方是要进行一下修改的。
- 美观,放大之后还是聚成一团,这些问题都要自己去进行设计。
- 现在还没有示例数据和发音,这个东西也是需要做的,但是我就bu做了。
class APP:
def __init__(self, master):
self.IndexVar = IntVar()
self.IndexVar.set(0)
self.TextVar = IntVar()
self.TextVar.set(0)
self.RadVar = IntVar()
self.RadVar.set(99)
self.Num = IntVar()
self.Num.set(30)
self.doc = ["Hello Word!"]
self.know_list = []
self.unknow_list = []
self.label_frame1 = ttk.LabelFrame(master, text="设置背单词数量")
self.label_frame1.pack()
self.Entry = ttk.Entry(self.label_frame1, width=12, textvariable=self.Num).pack()
self.En_button = ttk.Button(self.label_frame1, text='start', command=self.start).pack()
self.StrVar = StringVar()
self.StrVar.set(self.doc[self.TextVar.get()])
self.label_frame = ttk.LabelFrame(master, text="...学习单词中...", labelanchor='n')
self.label_frame.pack()
self.label = ttk.Label(self.label_frame, textvariable=self.StrVar)
self.label.pack(padx=10, pady=10)
self.up = ttk.Button(self.label_frame, text='previous', command=self.up_word).pack(side=LEFT)
self.next = ttk.Button(self.label_frame, text='next', command=self.next_word).pack(side=RIGHT)
self.ctrl_list = ["know", "unknow"]
for i in range(len(self.ctrl_list)):
self.Rad = ttk.Radiobutton(self.label_frame, text=self.ctrl_list[i], variable=self.RadVar, value=i, command=self.word_log).pack()
def start(self):
path = 'C:/Users/64894/Desktop/word.docx'
doc = docx.Document(path)
index_list = np.random.randint(0, len(doc.paragraphs), self.Num.get())
word_list = []
for i in index_list:
word_list.append(doc.paragraphs[i].text)
self.doc = word_list
self.StrVar.set(self.doc[self.TextVar.get()])
def up_word(self):
RadVar = self.RadVar.get()
index = self.IndexVar.get()
if RadVar == 0:
self.know(index)
else:
self.unknow(index)
if index == 0:
tkinter.messagebox.showinfo(message="sb,这已经是第一个了")
else:
self.IndexVar.set(index - 1)
self.TextVar.set(self.IndexVar.get())
self.StrVar.set(self.doc[self.TextVar.get()])
self.RadVar.set(99)
def next_word(self):
RadVar = self.RadVar.get()
index = self.IndexVar.get()
if RadVar == 0:
self.know(index)
else:
self.unknow(index)
if index >= self.Num.get() - 1:
tkinter.messagebox.showinfo(message="sb,这是最后一个了。")
else:
self.IndexVar.set(index + 1)
self.TextVar.set(self.IndexVar.get())
self.StrVar.set(self.doc[self.TextVar.get()])
self.RadVar.set(99)
def word_log(self):
RadVar = self.RadVar.get()
index = self.IndexVar.get()
if RadVar == 0:
self.know_list.append(index)
else:
self.unknow_list.append(index)
def know(self, index):
print("I know")
def unknow(self, index):
print("I Do unknow")
if name == 'main':
root = Tk()
root.title("0.1版本")
app = APP(master=root)
root.mainloop()
'''
网友评论