最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python tkinter 做個簡單的計算器的方法

 更新時間:2021年04月09日 14:10:02   作者:lhys666  
這篇文章主要介紹了python tkinter 做個簡單的計算器的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

背景

最近本菜雞在學習 python GUI,從 tkinter 入門,想先做個小軟件練習一下
思來想去,決定做一個 計算器

設計思路

首先,導入我們需要的包 — tkinter,并通過 實例化一個 Tk 對象 創(chuàng)建窗口
因為我有點菜,目前還把控不好各組件的位置,所以窗口使用自動默認的大小

import tkinter as tk
import tkinter.messagebox
win = tkinter.Tk()
win.title("計算器")
win.mainloop()

大致 規(guī)劃 各組件的 位置

我的目標是做成這個樣子(最終效果)

大致規(guī)劃好位置后,我創(chuàng)建了 四個 Frame,如下
u1s1,感覺兩三個就夠了

# 承載提示信息與輸入框的框架
entry_frame = tk.Frame(win)
# 承載運算符號的框架
menu_frame = tk.Frame(win)
# 承載數字的框架
major_frame = tk.Frame(win)
# 承載等號的框架
cal_frame = tk.Frame(win)

entry_frame.pack(side="top")
menu_frame.pack(side="left")
major_frame.pack()
cal_frame.pack(side="right")

下面就做一個 輸入框,分為兩部分

  • 一部分是漢字部分,提示信息,使用 Label 控件
  • 一部分是輸入框,使用 Entry 控件
t_label = tk.Label(entry_frame, text = "請輸入 : ")
t_label.pack(side='left')
word_entry = tk.Entry(
    entry_frame,
    fg = "blue", # 輸入字體顏色,設置為藍色
    bd = 3, # 邊框寬度
    width = 39, # 輸入框長度
    justify = 'right' # 設置對齊方式為靠右
)
word_entry.pack()

然后在下面的左側 排列運算符號

for char in ['+', '-', '×', '÷']:
    myButton(menu_frame, char, word_entry)

其中,myButton 類實例化一個按鈕,并且當點擊按鈕時,輸入框會出現相應的文本
當時遇到了問題 — 點擊按鈕無法獲得爭取的按鈕上的文本你, 解決后寫了一篇博客,傳送門

用相同的辦法 列舉各個數字

for i in range(4):
    num_frame = tk.Frame(major_frame)
    num_frame.pack()
    if i < 3:
        for count in range(3*i+1, 3*i+4):
            myButton(num_frame, count, word_entry, side=(i, count))
        continue
    myButton(num_frame, 0, word_entry, side=(i, 0))

當然,重置按鈕和計算按鈕 可不能忘
最后的計算就懶了一點,直接使用 entry.get() 獲得要計算的式子,使用 eval() 函數計算,如果格式錯誤即彈窗提示

def calculate(entry):
    try:
        result = entry.get()
        # 如果輸入框中不存在字符串,則 = 按鈕不管用
        if result == '':
            return
        result = eval(result)
        entry.delete(0, "end")
        entry.insert(0, str(result))
    except:
        tkinter.messagebox.showerror("錯誤", "格式錯誤!\n請重新輸入!")
reset_btn = tk.Button(
    cal_frame,
    text = '重置',
    activeforeground = "blue",
    activebackground = "pink",
    width = "13",
    command = lambda :word_entry.delete(0, "end")
).pack(side="left")
result_btn = tk.Button(
    cal_frame,
    text = '=',
    activeforeground = "blue",
    activebackground = "pink",
    width = "13",
    command = lambda :calculate(word_entry)
).pack(side="right")

全部代碼

major.py

# -*- coding=utf-8 -*-
# @Time    : 2021/3/4 13:06
# @Author  : lhys
# @FileName: major.py

myName = r'''
    Welcome, my master!
    My Name is :
     ____                ____        ____        ____         ____              ______________
    |    |              |    |      |    |      |    \       /    |           /              /
    |    |              |    |      |    |      |     \     /     |          /              /
    |    |              |    |      |    |      |      \   /      |         /              /
    |    |              |    |      |    |       \      \_/      /         /       _______/
    |    |              |    |______|    |        \             /          \            \
    |    |              |                |         \           /            \            \
    |    |              |     ______     |          \         /              \            \
    |    |              |    |      |    |           \       /                \________    \
    |    |              |    |      |    |            |     |               /              /
    |    |_______       |    |      |    |            |     |              /              /
    |            |      |    |      |    |            |     |             /              /
    |____________|      |____|      |____|            |_____|            /______________/
    '''
print(myName)
import tkinter as tk
from tools import *

win = tk.Tk()
win.title('計算器')

entry_frame = tk.Frame(win)
menu_frame = tk.Frame(win)
major_frame = tk.Frame(win)
cal_frame = tk.Frame(win)

entry_frame.pack(side="top")
menu_frame.pack(side="left")
major_frame.pack()
cal_frame.pack()

# 輸入框
t_label = tk.Label(entry_frame, text = "請輸入 : ")
t_label.pack(side='left')
word_entry = tk.Entry(
    entry_frame,
    fg = "blue",
    bd = 3,
    width = 39,
    justify = 'right'
)
word_entry.pack()


# 菜單欄
for char in ['+', '-', '×', '÷']:
    myButton(menu_frame, char, word_entry)

button_side = ['right', 'left']

for i in range(4):
    num_frame = tk.Frame(major_frame)
    num_frame.pack()
    if i < 3:
        for count in range(3*i+1, 3*i+4):
            myButton(num_frame, count, word_entry, side=(i, count))
        continue
    myButton(num_frame, 0, word_entry, side=(i, 0))

reset_btn = tk.Button(
    cal_frame,
    text = '重置',
    activeforeground = "blue",
    activebackground = "pink",
    width = "13",
    command = lambda :word_entry.delete(0, "end")
).pack(side="left")
result_btn = tk.Button(
    cal_frame,
    text = '=',
    activeforeground = "blue",
    activebackground = "pink",
    width = "13",
    command = lambda :calculate(word_entry)
).pack(side="right")

win.mainloop()

tools.py

# -*- coding=utf-8 -*-
# @Time    : 2021/3/4 13:20
# @Author  : lhys
# @FileName: tools.py

import tkinter
import tkinter.messagebox

def calculate(entry):
    try:
        result = entry.get()
        if result == '':
            return
        result = eval(result)
        print(result)
        entry.delete(0, "end")
        entry.insert(0, str(result))
    except:
        tkinter.messagebox.showerror("錯誤", "格式錯誤!\n請重新輸入!")

class myButton():
    def __init__(self, frame, text, entry, **kwargs):
        side = kwargs.get('side') if 'side' in kwargs else ()
        self.btn = tkinter.Button(
            frame,
            text = text,
            activeforeground="blue",
            activebackground="pink",
            width="13",
            command=lambda :entry.insert("end", text)
        )
        if side:
            self.btn.grid(row=side[0], column=side[1])
        else:
            self.btn.pack()

到此這篇關于python tkinter 做個簡單的計算器的方法的文章就介紹到這了,更多相關python tkinter 計算器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pytest單元測試框架生成HTML測試報告及優(yōu)化的步驟

    Pytest單元測試框架生成HTML測試報告及優(yōu)化的步驟

    本文主要介紹了Pytest單元測試框架生成HTML測試報告及優(yōu)化的步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SELENIUM自動化模擬鍵盤快捷鍵操作實現解析

    SELENIUM自動化模擬鍵盤快捷鍵操作實現解析

    這篇文章主要介紹了SELENIUM自動化模擬鍵盤快捷鍵操作實現解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 詳解Python類的定義與實例

    詳解Python類的定義與實例

    這篇文章給大家介紹Python類的定義與實例,下面是一個使用?NewSpaceGraph?類的示例,展示了如何實例化該類并調用其方法,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • 基于pytorch padding=SAME的解決方式

    基于pytorch padding=SAME的解決方式

    今天小編就為大家分享一篇基于pytorch padding=SAME的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 圖文詳解在Anaconda安裝Pytorch的詳細步驟

    圖文詳解在Anaconda安裝Pytorch的詳細步驟

    Anaconda指的是一個開源的Python發(fā)行版本,其包含了conda、Python等180多個科學包及其依賴項,下面這篇文章主要給大家介紹了關于在Anaconda安裝Pytorch的詳細步驟,需要的朋友可以參考下
    2022-07-07
  • pyinstaller打包python3.6和PyQt5中各種錯誤的解決方案匯總

    pyinstaller打包python3.6和PyQt5中各種錯誤的解決方案匯總

    pyinstaller是打包python很方便的一個套件,我們可以很輕易地使用他,下面這篇文章主要給大家介紹了關于pyinstaller打包python3.6和PyQt5中各種錯誤解決的相關資料,需要的朋友可以參考下
    2022-08-08
  • 使用Python遍歷文件夾實現查找指定文件夾

    使用Python遍歷文件夾實現查找指定文件夾

    這篇文章主要為大家介紹了如何使用Python遍歷文件夾從而實現查找指定文件夾下所有相同名稱的文件、所有相同后綴名的文件,感興趣的可以了解一下
    2022-07-07
  • python實現按行切分文本文件的方法

    python實現按行切分文本文件的方法

    這篇文章主要介紹了python實現按行切分文本文件的方法,涉及Python利用shell命令操作文本文件的相關技巧,需要的朋友可以參考下
    2016-04-04
  • 20個超實用Python自動化腳本分享

    20個超實用Python自動化腳本分享

    在當今的快節(jié)奏工作環(huán)境中,自動化不再是一種奢侈,而是提高效率和精確性的必需手段,這篇文章為大家整理了20個超實用Python自動化腳本,希望對大家有所幫助
    2024-01-01
  • Python pandas進行數據預處理的實現

    Python pandas進行數據預處理的實現

    本案例通過使用pandas庫對電子商務客戶數據進行數據預處理,包括數據導入、查看、缺失值處理等處理,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01

最新評論

津市市| 江北区| 永平县| 兰西县| 偃师市| 邵阳县| 宁乡县| 洪湖市| 济宁市| 建始县| 湖南省| 射阳县| 肇东市| 扎赉特旗| 磐石市| 蛟河市| 关岭| 开阳县| 青川县| 揭东县| 绥化市| 商南县| 洪江市| 浦城县| 镇宁| 神农架林区| 梨树县| 通渭县| 合江县| 纳雍县| 长沙市| 鸡泽县| 孟津县| 称多县| 隆安县| 香港| 安多县| 济宁市| 阜城县| 江山市| 云南省|