python的GUI编程之实例-计算器

import tkinter as tk
from tkinter import ttk


class Application():

    def __init__(self, master):
        self.master = master
        self.initWidgets()
        self.status =False

    def initWidgets(self):
        self.input1 = tk.Entry(master=self.master, relief=tk.SUNKEN, font=('Courier New', 24), width=25, fg="blue")
        self.input1.pack(side=tk.TOP, pady=10)
        label = tk.Label(master=self.master, text="结果")
        label.pack(side=tk.TOP)
        self.input2 = tk.Entry(master=self.master, relief=tk.SUNKEN, font=('Courier New', 24), width=25, fg="blue")
        self.input2.pack(side=tk.TOP, pady=10)

        self.clear_button = tk.Button(master=self.master,text="清除", font=('Verdana', 20), width=25)
        self.clear_button.pack(side=tk.TOP, pady=10)
        self.clear_button.bind("<Button-1>",self.clear)

        p2 = tk.Frame(self.master)
        p2.pack(side=tk.TOP)
        names = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "+", "-", "*", "/", ".", "=")
        # 遍历字符串元组
        for i in range(len(names)):
            b = tk.Button(p2, text=names[i], font=('Verdana', 20), width=6)
            # print(i // 4, i % 4)
            b.grid(row=i // 4, column=i % 4)
            if b['text'] in ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".","+", "-", "*", "/"):
                b.bind('<Button-1>', self.initNum)
            else :
                b.bind('<Button-1>', self.getResult)

    def initNum(self, event):

        if self.status:
            # 删除
            self.input1.delete(0, tk.END)
            text = self.absolute_result
            self.input1.insert(0, text)
            index = self.input1.index(tk.INSERT)
            self.input1.insert(index, event.widget['text'])
            self.status = False
        else:
            index = self.input1.index(tk.INSERT)
            text = event.widget['text']
            self.input1.insert(index, text)

    def getResult(self, event):
        tmp_result =""
        self.status = True
        self.input2.delete(0, tk.END)
        tmp_result += str(self.input1.get()).rstrip("+-*/")
        self.absolute_result = eval(tmp_result)
        self.input2.insert(tk.END, self.absolute_result)

    def clear(self, event):
        self.input1.delete(0, tk.END)
        self.input2.delete(0, tk.END)



root = tk.Tk()
root.title("Grid布局")
Application(root)
root.mainloop()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中国象棋的C++代码 #include "chess_zn.h" QTcpSocket * Chess_ZN::client = new QTcpSocket; QUndoStack * Chess_ZN::undoStack = new QUndoStack(); int Chess_ZN::second = 120; bool Chess_ZN::isTurn = false; Chess_ZN::Chess_ZN(QWidget *parent) : QWidget(parent) { init(); initElse(); } void Chess_ZN::initElse(){ treeitem = 1; timer=new QTimer; portmap=0; isConn = true; start = false; isTimer = false; isSearch = false; connect(timer,SIGNAL(timeout()),this,SLOT(stopWatch())); connect(wigettree[1],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(getInfo(QTreeWidgetItem*))); connect(wigettree[0],SIGNAL(itemClicked(QTreeWidgetItem*,int)),this,SLOT(connectToHost_PK(QTreeWidgetItem*))); connect(client,SIGNAL(connected()),this,SLOT(connected())); //连接一旦断开 connect(client,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error(QAbstractSocket::SocketError ))); connect(client,SIGNAL(readyRead()),this,SLOT(readyRead())); peer = new PeerManager(this); peer->setServerPort(10001); items=wigettree[1]->currentItem(); item_pk=wigettree[0]->currentItem(); item_pk_info=wigettree[0]->currentItem(); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[8], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[9], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[10], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),action2[11], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[0], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[1], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[2], SLOT(setEnabled(bool))); connect(undoStack, SIGNAL(canUndoChanged(bool)),button[3], SLOT(setEnabled(bool))); timer->start(1000); createUndoView(); isChoose = true; tableeditor=new TableEditor("users"); } void Chess_ZN::createUndoView() { undoVie
这里提供一个使用 Python Tkinter 模块实现的 GUI 界面示例,包含一个简单的计算器: ```python from tkinter import * class Calculator: def __init__(self): self.root = Tk() self.root.title("Calculator") # 添加输入框 self.entry = Entry(self.root, width=35, borderwidth=5) self.entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # 添加按钮 self.button_1 = Button(self.root, text="1", padx=40, pady=20, command=lambda: self.button_click(1)) self.button_2 = Button(self.root, text="2", padx=40, pady=20, command=lambda: self.button_click(2)) self.button_3 = Button(self.root, text="3", padx=40, pady=20, command=lambda: self.button_click(3)) self.button_4 = Button(self.root, text="4", padx=40, pady=20, command=lambda: self.button_click(4)) self.button_5 = Button(self.root, text="5", padx=40, pady=20, command=lambda: self.button_click(5)) self.button_6 = Button(self.root, text="6", padx=40, pady=20, command=lambda: self.button_click(6)) self.button_7 = Button(self.root, text="7", padx=40, pady=20, command=lambda: self.button_click(7)) self.button_8 = Button(self.root, text="8", padx=40, pady=20, command=lambda: self.button_click(8)) self.button_9 = Button(self.root, text="9", padx=40, pady=20, command=lambda: self.button_click(9)) self.button_0 = Button(self.root, text="0", padx=40, pady=20, command=lambda: self.button_click(0)) self.button_add = Button(self.root, text="+", padx=39, pady=20, command=self.button_add) self.button_subtract = Button(self.root, text="-", padx=41, pady=20, command=self.button_subtract) self.button_multiply = Button(self.root, text="*", padx=40, pady=20, command=self.button_multiply) self.button_divide = Button(self.root, text="/", padx=41, pady=20, command=self.button_divide) self.button_clear = Button(self.root, text="Clear", padx=79, pady=20, command=self.button_clear) self.button_equal = Button(self.root, text="=", padx=91, pady=20, command=self.button_equal) # 按钮布局 self.button_1.grid(row=3, column=0) self.button_2.grid(row=3, column=1) self.button_3.grid(row=3, column=2) self.button_4.grid(row=2, column=0) self.button_5.grid(row=2, column=1) self.button_6.grid(row=2, column=2) self.button_7.grid(row=1, column=0) self.button_8.grid(row=1, column=1) self.button_9.grid(row=1, column=2) self.button_0.grid(row=4, column=0) self.button_clear.grid(row=4, column=1, columnspan=2) self.button_add.grid(row=5, column=0) self.button_subtract.grid(row=6, column=0) self.button_multiply.grid(row=6, column=1) self.button_divide.grid(row=6, column=2) self.button_equal.grid(row=5, column=1, columnspan=2) self.root.mainloop() def button_click(self, number): current = self.entry.get() self.entry.delete(0, END) self.entry.insert(0, str(current) + str(number)) def button_clear(self): self.entry.delete(0, END) def button_add(self): first_number = self.entry.get() global f_num global math math = "addition" f_num = int(first_number) self.entry.delete(0, END) def button_subtract(self): first_number = self.entry.get() global f_num global math math = "subtraction" f_num = int(first_number) self.entry.delete(0, END) def button_multiply(self): first_number = self.entry.get() global f_num global math math = "multiplication" f_num = int(first_number) self.entry.delete(0, END) def button_divide(self): first_number = self.entry.get() global f_num global math math = "division" f_num = int(first_number) self.entry.delete(0, END) def button_equal(self): second_number = self.entry.get() self.entry.delete(0, END) if math == "addition": self.entry.insert(0, f_num + int(second_number)) elif math == "subtraction": self.entry.insert(0, f_num - int(second_number)) elif math == "multiplication": self.entry.insert(0, f_num * int(second_number)) elif math == "division": self.entry.insert(0, f_num / int(second_number)) calculator = Calculator() ``` 这个计算器界面包含了数字按钮、四则运算符、清除键和等于键,并且可以进行简单的数学计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值