【发布时间】:2014-02-03 21:48:56
【问题描述】:
from Tkinter import *
import tkFileDialog
import sys
def openwindows():
eText.set(open.show())
def loadfiles():
filedirectory=eText.get()
f=file(filedirectory)
lines = f.readlines()
length=len(lines)
#vertex=[]
#face=[]
for x in range(0,length):
print (x)
Root=Tk()
RTitle=Root.title("Assignment_2")
RWidth=Root.winfo_screenwidth()
RHeight=Root.winfo_screenheight()
Root.geometry("%dx%d+%d+%d" % (RWidth/3,RHeight/3*2,RWidth/2-RWidth/6, RHeight/2-RHeight/3))
frame1 = Frame(Root)
frame1.pack()
Label(frame1, text="Filename: ").pack(side = LEFT)
eText = StringVar()
statusbar = Entry(frame1, state="readonly", textvariable=eText)
eText.set("pyramid.txt")
statusbar.pack(side = LEFT)
myfiletypes = [('text files', '*.txt'), ('All files', '*')]
open = tkFileDialog.Open(frame1, filetypes = myfiletypes)
Button(frame1, text="Browse", fg = "Blue", command=openwindows).pack(side = LEFT)
Button(frame1, text = "Load", fg = "red", command=loadfiles).pack(side=LEFT)
frame2 = Frame(Root)
frame2.pack()
Label(frame2, text="Rotation Axis: ").pack(side=LEFT)
r1 = IntVar()
r1.set(3)
Radiobutton(frame2, text="X", variable=r1, value=1).pack(side=LEFT)
Radiobutton(frame2, text="Y", variable=r1, value=2).pack(side=LEFT)
Radiobutton(frame2, text="Z", variable=r1, value=3).pack(side=LEFT)
Radiobutton(frame2, text="Line AB", variable=r1, value=4).pack(side=LEFT)
Label(frame2, text="A:").pack(side=LEFT)
pointA = Entry(frame2, width=10)
pointA.insert(0, "[0.0,0.0,0.0]")
pointA.pack(side=LEFT)
Label(frame2, text="B:").pack(side=LEFT)
pointB = Entry(frame2, width=10)
pointB.insert(0, "[1.0,1.0,1.0]")
pointB.pack(side=LEFT)
var1 = StringVar(Root)
var1.set("90")
Label(frame2, text="Degree:").pack(side=LEFT)
Spinbox(frame2, width=3, from_=0, to=350, increment=10, textvariable=var1).pack(side=LEFT)
var2 = StringVar(Root)
var2.set("5")
Label(frame2, text="Steps:").pack(side=LEFT)
Spinbox(frame2, width=3, from_= 1, to = 10, textvariable=var2).pack(side=LEFT)
Button(frame2, text = "Rotate", fg = "Blue").pack(side=LEFT)
frame3 = Frame(Root)
frame3.pack()
Label(frame3, text="Scale Ratio: ").pack(side=LEFT)
r2 = IntVar()
r2.set(1)
Radiobutton(frame3, text="All", variable=r2, value=1).pack(side=LEFT)
var3 = StringVar(Root)
var3.set("1")
Spinbox(frame3, width=4, from_= 0.25, to = 4, textvariable=var3, increment=0.25, format='%3.2f').pack(side=LEFT)
Radiobutton(frame3, text="[Sx,Sy,Sz]", variable=r2, value=2).pack(side=LEFT)
scaleamount = Entry(frame3, width=10)
scaleamount.insert(0, "[1,1,1]")
scaleamount.pack(side=LEFT)
var4 = StringVar(Root)
var4.set("4")
Label(frame3, text="Steps:").pack(side=LEFT)
Spinbox(frame3, width=3, from_= 1, to = 10, textvariable=var4).pack(side=LEFT)
Button(frame3, text = "Scale", fg = "Blue").pack(side=LEFT)
separator = Frame(height=2, bd=1, relief=SUNKEN)
separator.pack(fill=X, padx=5, pady=5)
Canvas(Root, bg="Blue").pack(fill="both", expand=True)
mainloop()
当你点击加载时,它假设读取文件并显示这个。
0
1
2
3
4
5
6
7
.....
无论你在 txt 文件中有多少行。 但问题是,它只显示这个
0
这意味着 for 循环只运行了一次,仅此而已。
如果我关闭程序,那么其余的数字将显示在命令提示符中。
真的很奇怪……没有意义。
loadfiles() 本身工作得很好。
它只是不适用于按钮
【问题讨论】:
-
如果你只运行那个函数会发生什么?打印
lines以查看它是否读取了文件。 -
@sashkello 我试过了。
-
显示
print lines的结果。 -
@sashkello ['v 0 0 0\n', 'v .8 0 0\n', 'v 0 .8 0\n', 'v .8 .8 0\n' , 'v 0.4 0.4 .7\n', 'f 4 2 1\n', 'f 3 4 1\n', 'f 2 5 1\n', 'f 5 3 1\n', 'f 2 4 5\n', 'f 3 5 4\n', 'w -1.0 -1.0 1\t1\n', 's 0.1 0.1 0.9 0.9\n', '\n']
-
@sashkello 类似这个函数只运行1个打印语句,如果我在
for loop前面添加print lines,则只会打印lines,0将是消失了
标签: python-2.7 button for-loop tkinter