Python 使用tkinter填充条目

Python 使用tkinter填充条目,python,tkinter,Python,Tkinter,当我想用tkinter填充一个输入框时,我遇到了一个问题。我当前的脚本正在调用另一个脚本以获取值。然后我希望数据显示在Tkinter输入框中 这是我当前的代码,我尝试过tbName.set(“tbName”,account.getName())类似的东西(有或没有tbName),我也尝试过triws-StringVar。我不确定我是否用错了。我已经查看了以下站点:。我对Python非常陌生,因此任何帮助都将是必要的 from Tkinter import * from bank import B

当我想用tkinter填充一个输入框时,我遇到了一个问题。我当前的脚本正在调用另一个脚本以获取值。然后我希望数据显示在Tkinter输入框中

这是我当前的代码,我尝试过
tbName.set(“tbName”,account.getName())
类似的东西(有或没有tbName),我也尝试过triws-StringVar。我不确定我是否用错了。我已经查看了以下站点:。我对Python非常陌生,因此任何帮助都将是必要的

from Tkinter import *
from bank import Bank, SavingsAccount


class BankManager(object):

    root = Tk()

    lblName = Label(root, text="Name")
    lblPin = Label(root, text="Pin")
    lblBalance = Label(root, text="Balance R")
    lblStatus = Label(root, text="Status")

    tbName = Entry(root)
    tbPin = Entry(root)
    tbBalance = Entry(root)
    tbStatus = Entry(root)

    def __init__(self):
        self.bank = None
        self.app = None
        self.current_index = 0
        self.create_bank()
        self.populate_gui(self.current_index)

    def new_account(self, event):
        name = self.app.getEntry('name')
        pin = self.app.getEntry('pin')
        balance = self.app.getEntry('balance')
        account = self.bank.get(pin)
        if account:
            self.app.setEntry("status", "Account with pin exists")
        else:
            self.bank.add(SavingsAccount(name, pin, float(balance)))
            self.app.setEntry("status", "New account created")
            self.current_index = self.bank.getPins().index(pin)

    btnNewAcc = Button(root,text="New Account")
    btnNewAcc.bind("<Button>",new_account)

    def update_account(self, event):
        name = self.app.getEntry('name')
        pin = self.app.getEntry('pin')
        balance = self.app.getEntry('balance')
        account = self.bank.get(pin)
        if account:
            account._name = name
            account._balance = balance
            self.app.setEntry("status", "Account updated")
        else:
            self.app.setEntry("status", "Account with pin doesn't exist")

    btnUpdateAcc = Button(root, text="Update Account")
    btnUpdateAcc.bind("<Button>",update_account)

    def remove_account(self, event):
        pin = self.app.getEntry('pin')
        account = self.bank.get(pin)
        if account:
            self.bank.remove(pin)
            self.app.setEntry("status", "Account removed")
            self.current_index = 0
        else:
            self.app.setEntry("status", "Account with pin doesn't exist")

    btnRemoveAcc = Button(root,text="Remove Account")
    btnRemoveAcc.bind("<Button>",remove_account)

    def compute_interest(self, event):
        self.bank.computeInterest()
        pin = self.app.getEntry('pin') 
        account = self.bank.get(pin)
        if account:
            self.app.setEntry("status", "Interest updated")
            self.app.setEntry("balance", str(account.getBalance()))
        else:
            self.app.setEntry("status", "Account with pin doesn't exist")

    btnConputeInterest = Button(root,text="Compute Interest")
    btnConputeInterest.bind("<Button>",compute_interest)

    def press_navigator(self, event):
        if button == "Previous":
            if self.current_index == 0:
                self.current_index = len(self.bank.getPins()) - 1
            else:
                self.current_index -= 1
        elif button == "Next":
            if self.current_index == len(self.bank.getPins()) - 1:
                self.current_index = 0
            else:
                self.current_index += 1
        self.populate_gui(self.current_index)

    btnPrevious = Button(root,text="Previous")
    btnPrevious.bind("<Button>",press_navigator)

    btnNext = Button(root,text="Next")
    btnNext.bind("<Button>",press_navigator)

    lblName.grid(row=0)
    lblPin.grid(row=1)
    lblBalance.grid(row=2)
    lblStatus.grid(row=3)

    tbName.grid(row=0, column=1)
    tbPin.grid(row=1, column=1)
    tbBalance.grid(row=2, column=1)
    tbStatus.grid(row=3, column=1)

    btnNewAcc.grid(row=0, column=2)
    btnUpdateAcc.grid(row=1, column=2)
    btnRemoveAcc.grid(row=2, column=2)
    btnConputeInterest.grid(row=3, column=2)
    btnPrevious.grid(row=4, column=0)
    btnNext.grid(row=4, column=1)

    root.mainloop()

    def create_bank(self):
        self.bank = Bank()
        a1 = SavingsAccount('zzz', '111', 100)
        a2 = SavingsAccount('yyy', '222', 200)
        a3 = SavingsAccount('xxx', '333', 300)
        self.bank.add(a1)
        self.bank.add(a3)
        self.bank.add(a2)

    def populate_gui(self, index):
        account = self.bank.get(self.bank.getPins()[index])
        tbName.set("tbName", account.getName())    

if __name__ == '__main__':
    BankManager()
从Tkinter导入*
来自银行进口银行,储蓄账户
类BankManager(对象):
root=Tk()
lblName=标签(根,text=“名称”)
lblPin=标签(根,text=“Pin”)
lblBalance=标签(根,text=“Balance R”)
lblStatus=标签(root,text=“Status”)
tbName=条目(根)
tbPin=条目(根)
tbBalance=条目(根)
tbStatus=条目(根)
定义初始化(自):
self.bank=无
self.app=无
self.current_index=0
self.create_bank()
self.populate\u gui(self.current\u索引)
def新账户(自身、事件):
name=self.app.getEntry('name')
pin=self.app.getEntry('pin')
balance=self.app.getEntry('balance')
账户=self.bank.get(pin)
如果账户:
self.app.setEntry(“状态”,“存在pin帐户”)
其他:
self.bank.add(储蓄账户(名称、pin、浮动(余额)))
self.app.setEntry(“状态”,“已创建新帐户”)
self.current_index=self.bank.getPins().index(pin)
btnNewAcc=按钮(根,text=“新帐户”)
btnNewAcc.bind(“,新账户)
def更新_帐户(自身、事件):
name=self.app.getEntry('name')
pin=self.app.getEntry('pin')
balance=self.app.getEntry('balance')
账户=self.bank.get(pin)
如果账户:
帐户。_name=name
账户。\余额=余额
self.app.setEntry(“状态”,“帐户已更新”)
其他:
self.app.setEntry(“状态”,“具有pin的帐户不存在”)
btnUpdateAcc=按钮(root,text=“更新帐户”)
btnUpdateAcc.bind(“,更新帐户)
def删除_帐户(自身、事件):
pin=self.app.getEntry('pin')
账户=self.bank.get(pin)
如果账户:
自卸除(销)
self.app.setEntry(“状态”,“帐户已删除”)
self.current_index=0
其他:
self.app.setEntry(“状态”,“具有pin的帐户不存在”)
btnRemoveAcc=按钮(root,text=“删除帐户”)
btnRemoveAcc.bind(“,删除帐户)
def计算利息(自身、事件):
self.bank.computeInterest()
pin=self.app.getEntry('pin')
账户=self.bank.get(pin)
如果账户:
self.app.setEntry(“状态”、“兴趣更新”)
self.app.setEntry(“余额”,str(account.getBalance()))
其他:
self.app.setEntry(“状态”,“具有pin的帐户不存在”)
BTN计算兴趣=按钮(根,text=“计算兴趣”)
BTN计算利息。绑定(“,计算利息)
def press_navigator(自身、事件):
如果按钮==“上一个”:
如果self.current_index==0:
self.current_index=len(self.bank.getPins())-1
其他:
self.current_index-=1
elif按钮==“下一步”:
如果self.current_index==len(self.bank.getPins())-1:
self.current_index=0
其他:
self.current_索引+=1
self.populate\u gui(self.current\u索引)
btnPrevious=按钮(根,text=“上一个”)
btnPrevious.bind(“,按导航器)
btnNext=按钮(根,text=“下一步”)
btnNext.bind(“,按导航器)
lblName.grid(行=0)
lblPin.grid(行=1)
lblBalance.grid(行=2)
lblStatus.grid(行=3)
tbName.grid(行=0,列=1)
tbPin.grid(行=1,列=1)
tbBalance.grid(行=2,列=1)
tbStatus.grid(行=3,列=1)
btnNewAcc.grid(行=0,列=2)
btnUpdateAcc.网格(行=1,列=2)
btnRemoveAcc.网格(行=2,列=2)
btnConputeInterest.grid(行=3,列=2)
btnPrevious.grid(行=4,列=0)
btnNext.grid(行=4,列=1)
root.mainloop()
def创建_银行(自身):
self.bank=bank()
a1=储蓄账户('zzz','111',100)
a2=储蓄账户('yyy','222',200)
a3=储蓄账户('xxx','333',300)
自助银行添加(a1)
自助银行地址(a3)
自助银行添加(a2)
def填充图形用户界面(自身,索引):
account=self.bank.get(self.bank.getPins()[index])
tbName.set(“tbName”,account.getName())
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
银行经理()

如果要在条目小部件中设置文本,需要使用
Entry.insert(0,'text')
而不是
v.set
insert
方法中的0是要插入文本的位置,在本例中,它位于
条目的开头


如果不希望用户编辑条目中的内容,可以使用
Entry.config(state='readonly')
;如果以后要编辑内容,需要调用
Entry.config(state=NORMAL)
,然后才能再次使用
Entry.insert
。您不需要将StringVar设置为条目,仅使用
Entry.get()
就足够了。

您确定要从
account.getName()
中获取内容吗?另外,您是否收到任何错误消息?@lafexlos:当我使用appJar创建应用程序时,数据通过
self.app.setEntry(“name”)
传递。我想用tkinter做这个。到目前为止没有错误。我只想把值放在输入框中,这样我就可以继续使用按钮等…输入没有
设置
方法。任何tkinter教程都应该包括如何设置条目小部件的值。即使您链接的页面也会显示两种类型的更改条目文本。这个应该会有帮助。可能是