Tkinter入口盒

时间:2017-07-09 22:07:23

标签: python-3.x tkinter

我需要使用tkinter输入框从起始输入值计数到结束值,但是除了括号之外,2个输出文件是空白的我知道csv输出工作它只是获取用户输入是问题。谢谢你的帮助。

目前有代码。

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()

1 个答案:

答案 0 :(得分:0)

问题是如何创建输入字段。

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

变化:

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

为:

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

我注意到您的oute1oute2都是在程序开始时创建的。您需要将它们移动到一个函数中,它应该在main函数中正常工作。

试试这个:

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()