python - Python GUI - 计算器下拉菜单
问题描述
我需要创建一个基本的整数计算器程序,它使用两个条目、一个组合框、两个标签和一个按钮来进行基本计算,如下图所示。组合框应具有加法、减法和乘法选项,分别显示为“+”、“-”和“*”。
布局网格的第 0 行必须分别在第 0 列到第 2 列中包含一个条目、组合框和另一个条目。还必须在某处显示结果值的标签,可选地以等号开头,如下图所示。该按钮必须包含文本“计算”。您可以假设只有整数被输入到条目中。
Counter GUI 的布局如下所示
创建按钮计算器没有问题。我的问题是如何获得如图所示的工作 gui。有什么想法吗?
解决方案
这需要一些努力,但这里有:
from tkinter import *
from tkinter.ttk import *
def left_side():
"""Left """
global left_entry, right_entry, answer_label, integer_combo
left_entry.get()
def right_side():
"""Right"""
global left_entry, right_entry, answer_label, integer_combo
right_entry.get()
def combo_calc():
"""Combobox basic Calculator"""
global left_entry, right_entry, answer_label, integer_combo
if integer_combo.get() == "+":
answer_label['text'] = str(int(left_entry.get()) + int(right_entry.get()))
elif integer_combo.get() == "-":
answer_label['text'] = str(int(left_entry.get()) - int(right_entry.get()))
elif integer_combo.get() == "*":
answer_label['text'] = str(int(left_entry.get()) * int(right_entry.get()))
def main():
"""Runs the main GUI"""
global left_entry, right_entry, answer_label, integer_combo
window = Tk()
integer_options = ["+", "-", "*"]
integer_combo = Combobox(window,
values=integer_options)
integer_combo.set("+")
integer_combo.grid(row=0, column=1)
left_entry = Entry(window)
left_entry.grid(row=0, column=0)
right_entry = Entry(window)
right_entry.grid(row=0, column=2)
calc_button = Button(window, text='Calculate', command=combo_calc)
calc_button.grid(row=1, column=1)
equals_label = Label(window, text="=")
equals_label.grid(row=0,column=3)
answer_label = Label(window)
answer_label.grid(row=0, column= 4)
window.mainloop()
main()
推荐阅读
- excel - 有没有办法在 Visual Basic 中编辑 excel VBA 宏
- sql - SQL 代码风格。我应该使用 INNER 关键字吗
- boost - BOOST_INCLUDEDIR 和 BOOST_LIBRARYDIR 不同时的 find_package(Boost) 错误
- python - 即使传入的 object.attribute 不存在,如何让 get_or_create() 保存对象
- google-apps-script - 如何在谷歌脚本中阅读收件箱中的所有邮件?
- python - Web Scraping - 从 href 递归调用链接,遍历存储数据
- python - 如何在 python 中从 Web 下载 xlsx 文件
- java - CodecNotFoundException:未找到请求操作的编解码器:['org.apache.cassandra.db.marshal.ByteType' <-> byte]
- android - 通过恢复下载使用 Azure 存储下载文件
- ios - 如何从 pass Sender ID 中获取 FCMToken?