python - 如何在我的编码计算器中将输入框居中?
问题描述
我正在尝试使用 Python 3.7.2 在 Tkinter 中编写一个小基本计算器。没什么特别的,但我一直遇到同样的问题:看在耶稣的份上,我不能移动输入栏,使其位于所有输入按钮/第一行的上方。我尝试将它放在不同的列中或使用其他版本的代码,geometry
但绝对没有任何效果。我还在(德国)问答网站Gutefrage上提出了这个问题,但似乎没有很多程序员/答案有点不清楚。关于如何做到这一点的任何想法?
这是我的代码(WIP):
from random import *
from math import *
def insert_1():
text.insert(END, "1")
def insert_2():
text.insert(END, "2")
def insert_3():
text.insert(END, "3")
def insert_4():
text.insert(END, "4")
def insert_5():
text.insert(END, "5")
def insert_6():
text.insert(END, "6")
def insert_7():
text.insert(END, "7")
def insert_8():
text.insert(END, "8")
def insert_9():
text.insert(END, "9")
def insert_plus():
text.insert(END, "+")
def insert_minus():
text.insert(END, "-")
def insert_divide():
text.insert(END, ":")
def insert_multiply():
text.insert(END, "*")
def insert_ac():
text.delete(0.0, END)
def insert_equals():
text.delete(0.0, END)
text.insert(END, "Calculating...")
calculator = Tk()
text = Text(calculator, width=20, height=1)
bu1 = Button(calculator, text="1", activeforeground="white", activebackground="grey", command=insert_1)
bu2 = Button(calculator, text="2", activeforeground="white", activebackground="grey", command=insert_2)
bu3 = Button(calculator, text="3", activeforeground="white", activebackground="grey", command=insert_3)
bu4 = Button(calculator, text="4", activeforeground="white", activebackground="grey", command=insert_4)
bu5 = Button(calculator, text="5", activeforeground="white", activebackground="grey", command=insert_5)
bu6 = Button(calculator, text="6", activeforeground="white", activebackground="grey", command=insert_6)
bu7 = Button(calculator, text="7", activeforeground="white", activebackground="grey", command=insert_7)
bu8 = Button(calculator, text="8", activeforeground="white", activebackground="grey", command=insert_8)
bu9 = Button(calculator, text="9", activeforeground="white", activebackground="grey", command=insert_9)
bu_ac = Button(calculator, text="AC", activeforeground="white", activebackground="grey", command=insert_ac)
bu_plus = Button(calculator, text="+", activeforeground="white", activebackground="grey", command=insert_plus)
bu_minus = Button(calculator, text="-", activeforeground="white", activebackground="grey", command=insert_minus)
bu_divide = Button(calculator, text=":", activeforeground="white", activebackground="grey", command=insert_divide)
bu_multiply = Button(calculator, text="x", activeforeground="white", activebackground="grey", command=insert_multiply)
bu_equals = Button(calculator, text="=", activeforeground="white", activebackground="grey", command=insert_equals)
text.grid(row=1)
bu1.grid(row=2, column=1)
bu2.grid(row=2, column=2)
bu3.grid(row=2, column=3)
bu4.grid(row=3, column=1)
bu5.grid(row=3, column=2)
bu6.grid(row=3, column=3)
bu7.grid(row=4, column=1)
bu8.grid(row=4, column=2)
bu9.grid(row=4, column=3)
bu_plus.grid(row=2, column=4)
bu_minus.grid(row=3, column=4)
bu_divide.grid(row=4, column=4)
bu_multiply.grid(row=2, column=5)
bu_ac.grid(row=3, column=5)
bu_equals.grid(row=4, column=5)```
解决方案
您可以创建两个单独的框架并将一个放在另一个的顶部
我创建了 fc 和 fc2 并将 fc 放在 fc2 的顶部
from random import *
from math import *
from tkinter import *
def insert_1():
text.insert(END, "1")
def insert_2():
text.insert(END, "2")
def insert_3():
text.insert(END, "3")
def insert_4():
text.insert(END, "4")
def insert_5():
text.insert(END, "5")
def insert_6():
text.insert(END, "6")
def insert_7():
text.insert(END, "7")
def insert_8():
text.insert(END, "8")
def insert_9():
text.insert(END, "9")
def insert_plus():
text.insert(END, "+")
def insert_minus():
text.insert(END, "-")
def insert_divide():
text.insert(END, ":")
def insert_multiply():
text.insert(END, "*")
def insert_ac():
text.delete(0.0, END)
def insert_equals():
text.delete(0.0, END)
text.insert(END, "Calculating...")
calculator = Tk()
fc = Frame(calculator)
fc.grid(row=1)
fc2 = Frame(calculator)
fc2.grid(row = 2)
text = Text(fc, width=20, height=1)
bu1 = Button(fc2, text="1", activeforeground="white", activebackground="grey", command=insert_1)
bu2 = Button(fc2, text="2", activeforeground="white", activebackground="grey", command=insert_2)
bu3 = Button(fc2, text="3", activeforeground="white", activebackground="grey", command=insert_3)
bu4 = Button(fc2, text="4", activeforeground="white", activebackground="grey", command=insert_4)
bu5 = Button(fc2, text="5", activeforeground="white", activebackground="grey", command=insert_5)
bu6 = Button(fc2, text="6", activeforeground="white", activebackground="grey", command=insert_6)
bu7 = Button(fc2, text="7", activeforeground="white", activebackground="grey", command=insert_7)
bu8 = Button(fc2, text="8", activeforeground="white", activebackground="grey", command=insert_8)
bu9 = Button(fc2, text="9", activeforeground="white", activebackground="grey", command=insert_9)
bu_ac = Button(fc2, text="AC", activeforeground="white", activebackground="grey", command=insert_ac)
bu_plus = Button(fc2, text="+", activeforeground="white", activebackground="grey", command=insert_plus)
bu_minus = Button(fc2, text="-", activeforeground="white", activebackground="grey", command=insert_minus)
bu_divide = Button(fc2, text=":", activeforeground="white", activebackground="grey", command=insert_divide)
bu_multiply = Button(fc2, text="x", activeforeground="white", activebackground="grey", command=insert_multiply)
bu_equals = Button(fc2, text="=", activeforeground="white", activebackground="grey", command=insert_equals)
text.grid(row = 1)
bu1.grid(row=2, column=1)
bu2.grid(row=2, column=2)
bu3.grid(row=2, column=3)
bu4.grid(row=3, column=1)
bu5.grid(row=3, column=2)
bu6.grid(row=3, column=3)
bu7.grid(row=4, column=1)
bu8.grid(row=4, column=2)
bu9.grid(row=4, column=3)
bu_plus.grid(row=2, column=4)
bu_minus.grid(row=3, column=4)
bu_divide.grid(row=4, column=4)
bu_multiply.grid(row=2, column=5)
bu_ac.grid(row=3, column=5)
bu_equals.grid(row=4, column=5)
推荐阅读
- java - Android中的consumer-rules.pro和proguard-rules.pro有什么区别?
- javascript - Cookie 更改/切换/切换 CSS 类 jQuery 问题
- r - 在 macOS 上更新 gdal 后安装 R 包 sf 0.9.0 时出错
- c# - 使用 ASP.NET MVC 根据 ID 选择名称
- c++ - 在 C++ 中使用虚拟析构函数
- php - 如何在日期上插入 NULL 值
- java - 问卷应用程序选择选项值 4 和 5 未显示
- git - 获取用于推送 git 提交的所有电子邮件的唯一列表的最快方法
- r - 寻找一个 dplyr 函数来有条件地应用过滤器
- openssl - 带有 OPENSSL 的 ECDSA