猫史档案馆


【Python作品分享】分解质因数【作品秀】

用户:L0_0L0_0查看:0 回复:0 评论:0 创建时间:2021-03-21T18:18:14


【作品展示】

center_image

 

【作品介绍】

这是一个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


回复

上一页1 页 / 共 0下一页