【发布时间】:2021-08-13 19:42:56
【问题描述】:
所以我做了一个 tkinter 计算器,当我按下数字时,标签会显示数字。唯一的问题是当标签的宽度增加时,它会导致窗口的宽度也发生变化。当我按数字时,有没有办法让标签的长度向左而不是向右增加?代码如下-
from tkinter import *
FONT_NAME = "Courier"
val = ""
# ---------------------Functionality------------
def seven_is_clicked():
global val
val += "7"
solution_label.config(text=val)
def eight_is_clicked():
global val
val += "8"
solution_label.config(text=val)
def nine_is_clicked():
global val
val += "9"
solution_label.config(text=val)
def four_is_clicked():
global val
val += "4"
solution_label.config(text=val)
def five_is_clicked():
global val
val += "5"
solution_label.config(text=val)
def six_is_clicked():
global val
val += "6"
solution_label.config(text=val)
def one_is_clicked():
global val
val += "1"
solution_label.config(text=val)
def two_is_clicked():
global val
val += "2"
solution_label.config(text=val)
def three_is_clicked():
global val
val += "3"
solution_label.config(text=val)
def zero_is_clicked():
global val
val += "0"
solution_label.config(text=val)
# ---------------------UX------------------------
window = Tk()
window.config()
window.title("Calculator")
window.minsize()
window.resizable(0, 0)
solution_label = Label(text="0", height=2, font=(FONT_NAME, 30), bg="pink", anchor="e")
solution_label.grid(column=3, row=0)
AC_button = Button(text="AC", width=6, height=2, padx=7, pady=7, highlightthickness=0)
AC_button.grid(column=0, row=1, padx=3, pady=3)
division_button = Button(text="/", width=6, height=2, padx=7, pady=7, highlightthickness=0)
division_button.grid(column=1, row=1, padx=3, pady=3)
multiplication_button = Button(text="*", width=6, height=2, padx=7, pady=7, highlightthickness=0)
multiplication_button.grid(column=2, row=1, padx=3, pady=3)
subtraction_button = Button(text="-", width=6, height=2, padx=7, pady=7, highlightthickness=0)
subtraction_button.grid(column=3, row=1, padx=3, pady=3)
seven_button = Button(text="7", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=seven_is_clicked)
seven_button.grid(column=0, row=2, padx=3, pady=3)
eight_button = Button(text="8", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=eight_is_clicked)
eight_button.grid(column=1, row=2, padx=3, pady=3)
nine_button = Button(text="9", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=nine_is_clicked)
nine_button.grid(column=2, row=2, padx=3, pady=3)
plus_button = Button(text="+", width=6, height=6, padx=7, pady=7, highlightthickness=0)
plus_button.grid(column=3, row=2, rowspan=2, padx=3, pady=3)
four_button = Button(text="4", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=four_is_clicked)
four_button.grid(column=0, row=3, padx=3, pady=3)
five_button = Button(text="5", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=five_is_clicked)
five_button.grid(column=1, row=3, padx=3, pady=3)
six_button = Button(text="6", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=six_is_clicked)
six_button.grid(column=2, row=3, padx=3, pady=3)
one_button = Button(text="1", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=one_is_clicked)
one_button.grid(column=0, row=4, padx=3, pady=3)
two_button = Button(text="2", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=two_is_clicked)
two_button.grid(column=1, row=4, padx=3, pady=3)
three_button = Button(text="3", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=three_is_clicked)
three_button.grid(column=2, row=4, padx=3, pady=3)
equal_button = Button(text="=", width=6, height=6, padx=7, pady=7, highlightthickness=0)
equal_button.grid(column=3, row=4, rowspan=2, padx=3, pady=3)
delete_button = Button(text="Del", width=6, height=2, padx=7, pady=7, highlightthickness=0)
delete_button.grid(column=0, row=5, padx=3, pady=3)
zero_button = Button(text="0", width=6, height=2, padx=7, pady=7, highlightthickness=0, command=zero_is_clicked)
zero_button.grid(column=1, row=5, padx=3, pady=3)
decimal_button = Button(text=".", width=6, height=2, padx=7, pady=7, highlightthickness=0)
decimal_button.grid(column=2, row=5, padx=3, pady=3)
window.mainloop()
【问题讨论】:
-
添加
window.geometry("widthxheight")设置窗口的宽高。 -
首先你应该对所有按下的数字使用like一个函数,只需将按下的数字作为参数传递(基本的python东西)(然后将命令添加到按钮,你可能需要使用@ 987654323@) 并且如果您想争辩说您刚刚开始使用 python:如果您刚刚开始使用 python 并不重要,如果您这样做了,那么当您应该首先学习基础知识时,您已经在使用 GUI 做什么了。问题是,如果有很多重复的代码(比如这种情况),那么很可能有一种方法可以减少该代码。还学习如何在循环中创建按钮
-
你也应该指定主参数,你可能想要做的是这样做:
solution_label.grid(column=0, row=0, columnspan=4, sticky='e')
标签: python user-interface tkinter