如何更正输入框的输出

2024-03-29 05:34:55 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用进纸器按钮时,F的脚本在“主”框出现之前会一直运行到打印,然后不会对“主”框的输入做出反应。这导致输出为0.0千瓦,因为输入是一个长的小数后接一个L,当I时,用户输入是8777

我已经在网上漫游了大约一天了,什么也没找到。我对传统知识很陌生,但一直在努力学习。你知道吗

def F():
    master = tk.Tk()
    tk.Label(master, text = 'Feeder Number: ').grid(row=0)
    entry1 = tk.Entry(master)
    entry1.grid(row=0, column=1)
    button2 = tk.Button(master,
                        text=' Confirm',
                        command=entry1.get())
    button2.pack()
    button2.grid(row=0, column=2)
    fn = entry1.pack()
    print fn
    feed = filtered['Feeder']==fn
    feedfn = filtered[feed]
    Cap = feedfn['AC Name Plate Capacity <= 10kw']
    Cap = Cap.astype(float)
    AcPv = Cap.sum()
    print 'The total PV on this feeder is:', AcPv, 'kW'

root = tk.Tk()
frame = tk.Frame(root)
frame.pack()

button = tk.Button(frame,
                   text='Exit',
                   fg='red',
                   command=quit)
button.pack()
button.grid(row=1, column=1)

Fee = tk.Button(frame,
                text='Feeder',
                command=F)
Fee.pack()
Fee.grid(row=0, column=1)

root.mainloop()

预计27.702 输出0.0 考虑到我不会发布csv, 入口1/fn应为8777

当前为“无”

更新 我现在在打印fn时收到PY泳VAR的输出,我知道在获取输入之前代码一直在运行。在运行过滤器之前,有没有关于如何获取输入的建议?你知道吗

def F():
    master = tk.Tk()
    tk.Label(master, text = 'Feeder Number: ').grid(row=0)
    entry1 = tk.Entry(master)
    entry1.grid(row=0, column=1)
    button2 = tk.Button(master,
                        text=' Confirm',
                        command=entry1.get())
    button2.grid(row=0, column=2)
    fn = tk.IntVar()
    print fn
    feed = filtered['Feeder']==fn
    feedfn = filtered[feed]
    Cap = feedfn['AC Name Plate Capacity <= 10kw']
    Cap = Cap.astype(float)
    AcPv = Cap.sum()
    print 'The total PV on this feeder is:', AcPv, 'kW'

对于那些对最终代码感兴趣的人(对我有用):

def F():
    master = tk.Tk()
    tk.Label(master, text = 'Feeder Number: ').grid(row=0)

    entry = tk.Entry(master)
    entry.grid(row=0, column=1)

    def pint():
        data = entry.get()
        master.destroy()
        feed = filtered['Feeder']==data
        feedfn = filtered[feed]
        Cap = feedfn['AC Name Plate Capacity <= 10kw']
        Cap = Cap.astype(float)
        AcPv = Cap.sum()

        fdf = tk.Tk()
        tk.Label(fdf, text = AcPv).grid(row=0)

        button4 = tk.Button(fdf,
                            text = ' Exit',
                            fg='red',
                            command=fdf.destroy)
        button4.grid(row=1)

    button2 = tk.Button(master,
                        text=' Confirm',
                        command = pint)
    button2.grid(row=0, column=2)

    button3 = tk.Button(master,
                        text = ' Exit',
                        fg='red',
                        command=master.destroy)
    button3.grid(row=0, column=3)

    master.mainloop()

Tags: textmasterfeedcolumnbuttoncommandtkfiltered
1条回答
网友
1楼 · 发布于 2024-03-29 05:34:55

您的代码中有一些错误导致您收到的输出不同。你知道吗

首先,为什么代码执行时没有显示主框:

如果你想要一个持久的窗口,你的tkinter需要一个mainloop()调用。你知道吗

master.mainloop()

你用你的根做得对,但是你的主人缺少主循环。这一行基本上保持了GUI的活力,并在其上循环进行更改,直到它以某种方式被破坏。您需要在创建小部件之后添加这一行,以便能够与窗口交互。当您的窗口关闭时,将手动或使用以下命令执行在此行之后写入的任何内容(但在定义中仍缩进):

master.destroy()

接下来,虽然这将产生一个工作窗口,但是在主窗口打开时,您仍然可以与根窗口交互,如果您希望从主窗口获得变量,这可能会导致问题。我建议你阅读关于顶级小工具,这是专门为你这样的情况。(http://effbot.org/tkinterbook/toplevel.htm)或者,也可以使用tkinter的tkSimpleDialog.askinteger文件或者askfloat函数,它看起来非常适合您的应用程序。你知道吗

最后,条目允许您编写文本,但是如何访问文本?您可以使用Entry1.get()来提取条目的内容,或者在更新中开始提取时,可以为条目分配一个tkinter变量。当您更改条目中的写入字符串或数字时,此变量将被更新。要将变量绑定到条目,必须在条目的创建中声明它:

fn = tk.StringVar(value = '000')
entry1 = tk.Entry(master, textvariable = fn)

*注意,这需要在输入之前初始化fn变量。此外,您还可以在创建时初始化该变量的值

tkinter变量是一个对象,这就是为什么在打印它时,您会得到PY\u VAR.(对象的类型)要访问该值,您需要使用get()方法:

print(fn.get())

相关问题 更多 >