用户:L0_0查看:0 回复:0 评论:0 创建时间:2021-03-21T18:18:14
【作品展示】

【作品介绍】
这是一个tkinter程序,可以分解质因数
【作品源代码】
from tkinter import Tk, Menu, Label, Button, Toplevel, messagebox
root = Tk()
root.title('分解质因数')
root.resizable(width=False, height=False)
text = ''
symbols = '*'
historical_record_list = ''
input_component = Label(root, width=30, height=3, bg='grey', text=text, anchor='w')
input_component.grid(columnspan=3)
def Input(Text):
global text
text += Text
input_component['text'] = text
for i in range(10):
Button(root, width=9, height=3, command=lambda Text=str(i+1)[-1]: Input(Text), bg='white', text=str(i+1)[-1]).grid(column=i%3, row=i//3+1)
def del_input():
global text
text = text[:-1]
input_component['text'] = text
Button(root, width=9, height=3, command=del_input, bg='#c0c0c0', text='←').grid(column=1, row=4)
def operators():
global historical_record_list
Prime_factor_list = []
try:
num = int(text)
except:
return
i = 2
if num in (0, 1):
historical_record_list += str(num) + '=' + str(num) + '\n'
messagebox.showinfo('分解质因数', str(num) + '=' + str(num))
return
while 1:
if num % i == 0:
Prime_factor_list.append(str(i))
num /= i
i = 2
continue
if num == 1:
historical_record_list += str(text) + '=' + symbols.join(Prime_factor_list) + '\n'
messagebox.showinfo('分解质因数', str(text) + '=' + symbols.join(Prime_factor_list))
break
i += 1
Button(root, width=9, height=3, command=operators, bg='light blue', text=u'\u21b2').grid(column=2, row=4)
def ask_change_symbol(symbol):
global symbols
if messagebox.askquestion('更换乘号', '是否更换。') == 'yes':
symbols = symbol
top.destroy()
def change_symbol():
global top
top = Toplevel()
top.title('更换乘号')
Label(top, width=36, height=3, text='选择一种符号更换').grid(columnspan=2)
Button(top, width=18, height=3, command=lambda symbol='*': ask_change_symbol(symbol), text='*').grid(row=1)
Button(top, width=18, height=3, command=lambda symbol='×': ask_change_symbol(symbol), text='×').grid(column=1, row=1)
def show_record():
messagebox.showinfo('历史记录', historical_record_list)
def show_symbol():
messagebox.showinfo('目前乘号', symbols)
def reset_record():
global symbols, historical_record_list
if messagebox.askquestion('清除历史记录', '此操作将清除历史记录与重置设置,是否继续?') == 'yes':
symbols = '*'
historical_record_list = ''
def show_hint():
messagebox.showinfo('使用说明', '输入数字按下' + u'\u21b2' + '即可对其数字分解质因数,你可以切换乘号,你还可以随时看分解质因数的记录。')
menubar = Menu(root)
setupmenu = Menu(menubar, tearoff=0)
setupmenu.add_command(label='更换乘号', command=change_symbol)
setupmenu.add_command(label='清除历史记录', command=reset_record)
menubar.add_cascade(label='设置', menu=setupmenu)
checkmenu = Menu(menubar, tearoff=0)
checkmenu.add_command(label='目前乘号', command=show_symbol)
checkmenu.add_command(label='历史记录', command=show_record)
menubar.add_cascade(label='查看', menu=checkmenu)
menubar.add_command(label='使用说明', command=show_hint)
root.config(menu=menubar)
root.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn