【问题标题】:Append string to StringVar instance through button press (tkinter)通过按下按钮(tkinter)将字符串附加到 StringVar 实例
【发布时间】:2020-03-22 06:39:17
【问题描述】:

我正在尝试在 Tkinter 中制作一个基本的计算器,但我遇到了文本字段和数字按钮的问题。我希望按下的按钮显示在Entry() 窗口中,但我不知道如何处理StringVar 实例。它一直告诉我,StringVar 没有 .extend() 属性,即使它在不同的帖子中使用过(可能是旧版本?)。现在,我的按钮所能做的就是.set() 输入“0”,仅此而已。

基本上,我希望按下按钮来动态更新我的 StringVar,就像从左到右扩展字符串一样。最理想的情况是,我可以同时使用按钮和直接文本输入来更新StringVar(这就是跟踪的用途吗?)。 StringVar 甚至是正确的类吗?我对 GUI 编程很陌生,所以我不知道该使用什么。

import tkinter as tk

def N0(text):

    text.set('0')

root = tk.Tk()
formula = tk.StringVar()

Num_bw = 0.08
Num_bh = 0.15

Num_bx = 0.01
Num_by = 0.01

Num_bx0 = 0
Num_by0 = 0

Num_bw_tol = 0.004
Num_bh_tol = 0.01

width, height = root.winfo_screenwidth(), root.winfo_screenheight()
width  *= 0.5
height *= 0.5
r = width/height

root.geometry('%dx%d+0+0'%(width,height))

canvas = tk.Canvas(root,height=height,width=width,bg='#80dfff')
canvas.pack()

frame1 = tk.Frame(canvas,bg='#f2f2f2')                  
frame2 = tk.Frame(canvas,bg='#f2f2f2')

frame1.place(relx=0.03,rely=0.05,relwidth=0.94,relheight=0.2)
frame2.place(relx=0.07,rely=0.27,relwidth=0.86,relheight=0.68)                  

TextField = tk.Entry(frame1,bg='white',
                     textvariable=formula,
                     font=("Comic Sans MS", 15))

TextField.place(relx=0.01,rely=0.05,relwidth=0.98,relheight=0.9)

Num_0 = tk.Button(frame2,text='0',bg='#e6ffff',command=lambda:N0(formula))

Num_0.place(relx=Num_bw_tol*1 + Num_bx0 + Num_bw*1,
            rely=Num_bh_tol*5 + Num_by0 + Num_bh*5,
            relwidth=Num_bw,relheight=Num_bh)

root.mainloop()

【问题讨论】:

标签: python tkinter


【解决方案1】:

我自己不是 Tkinter 大师,但也许您可以创建一个函数,像这样在每次按下按钮时更新“计算器屏幕”

def updateButton(num, text):
    text.set(text.get() + str(num))

然后调用函数作为每个计算器按钮的 onclick,就像你对 N0 函数所做的那样

【讨论】:

  • 来自 McSpankies 的 Big McThankies。
猜你喜欢
  • 2021-07-02
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2017-12-02
  • 2020-07-17
  • 2015-12-31
相关资源
最近更新 更多