首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tkinter输入框

Tkinter输入框
EN

Stack Overflow用户
提问于 2017-07-09 22:07:23
回答 1查看 201关注 0票数 1

我需要使用tkinter输入框从一个起始输入值计数到一个结束值,但是除了括号之外,这两个输出文件是空白的,而且我知道csv输出是工作的--只是得到用户的输入,这就是问题所在。谢谢你的帮助。

这是当前的代码。

代码语言:javascript
复制
import csv
from tkinter import *

# Variables/Arrays
oddArray = []
evenArray = []


def main():
    for i in range(oute1, oute2):
        x = i
        # Odds
        if(x % 2 == 1):
            oddArray.append(x)
        # Evens
        elif(x % 2 == 0):
            evenArray.append(x)

    with open("odd_labels", "w") as outputFile1:
        writer1 = csv.writer(outputFile1)
        writer1.writerow([oddArray])

    with open("even_labels", "w") as outputFile2:
        writer2 = csv.writer(outputFile2)
        writer2.writerow([evenArray])


# gui framework
myGui = Tk()
# myGui.geometry('225x50')
# myGui.title("Label Creator")

Label(myGui, text="Starting value: ").grid(row=0)
Label(myGui, text="Ending value: ").grid(row=1)

a = IntVar()
b = IntVar()

e1 = Entry(myGui, textvariable=a).grid(row=0, column=1)
e2 = Entry(myGui, textvariable=b).grid(row=1, column=1)

oute1 = a.get()
oute2 = b.get()

Button(myGui, text="Start", command=main).grid(row=3)

myGui.mainloop()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-09 22:56:24

问题在于如何创建输入字段。

当您在小部件创建结束时使用网格管理器时,您将无法在其上使用.get(),因为网格管理器正在返回None。为了避免这种情况,您需要确保首先创建您的小部件,然后在单独的行上定义它的位置。

更改:

代码语言:javascript
复制
e1 = Entry(myGui, textvariable=a).grid(row=0, column=1)
e2 = Entry(myGui, textvariable=b).grid(row=1, column=1)

至:

代码语言:javascript
复制
e1 = Entry(myGui, textvariable=a)
e1.grid(row=0, column=1)
e2 = Entry(myGui, textvariable=b)
e2.grid(row=1, column=1)

我通知过您的oute1oute2都是在程序开始时创建的。您需要将它们移动到一个函数中,它在main函数中应该工作得很好。

试试这个:

代码语言:javascript
复制
import csv
from tkinter import *


myGui = Tk()

oddArray = []
evenArray = []

Label(myGui, text="Starting value: ").grid(row=0)
Label(myGui, text="Ending value: ").grid(row=1)

a = IntVar()
b = IntVar()

e1 = Entry(myGui, textvariable=a)
e1.grid(row=0, column=1)
e2 = Entry(myGui, textvariable=b)
e2.grid(row=1, column=1)

def main():
    oute1 = a.get()
    oute2 = b.get()
    for i in range(oute1, oute2):
        x = i
        # Odds
        if(x % 2 == 1):
            oddArray.append(x)
        # Evens
        elif(x % 2 == 0):
            evenArray.append(x)

    with open("odd_labels", "w") as outputFile1:
        writer1 = csv.writer(outputFile1)
        writer1.writerow([oddArray])

    with open("even_labels", "w") as outputFile2:
        writer2 = csv.writer(outputFile2)
        writer2.writerow([evenArray])


Button(myGui, text="Start", command=main).grid(row=3)

myGui.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45001499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档