我创建了一个从列表中读取某些字符串的函数。在tkinter中运行函数
该函数应该在用tkinter创建的框架内显示(或者称为)。
我的想法是创建函数作为框架类的方法(或者可能作为标签的方法)并用新实例调用该方法。结果是,内容显示在控制台中。
到目前为止我的代码:
from Tkinter import *
root = Tk()
a = 1
b = -6
c = -5
def calc_x(y):
x = 0
if y == c:
for i in range(1,len(data)):
x = x + int(data[i][y])
t = x/(len(data)-1)
print str(t)+"%"
else:
for i in range(1,len(data)):
x = x + int(data[i][y])
print x
class Fram(Frame):
def __init__(self,tk,width,height):
Frame.__init__(self,tk)
self.config(width=width)
self.config(height=height)
self.config(bd=1)
self.config(relief="solid")
square_frame = Fram(root,500,40).grid(row=0,column=0,padx=3,pady=3)
mainloop()
编辑:
ok了,非常感谢你这么远。 我添加了“数据”列表以及源URL。
如何使用任一变量(self.a/b/c)调用函数? 当我创建“Fram”的实例时,它不显示字符串。
from Tkinter import *
from urllib2 import *
import csv
root = Tk()
class Fram(Frame):
def __init__(self,tk,width,height):
Frame.__init__(self,tk)
self.config(width=width)
self.config(height=height)
self.config(bd=1)
self.config(relief="solid")
self.url = "http://data.nottinghamtravelwise.org.uk/parking.csv?noLocation=true?t=635509084580321642"
self.webpage = urlopen(self.url)
self.datareader = csv.reader(self.webpage.read().decode('utf-8').splitlines())
self.data = list(self.datareader)
self.a = 1
self.b = -6
self.c = -5
self.value = self.calc_x(self.a)
self.label = Label(self, text=self.value)
self.label.pack()
def calc_x(self, y):
x = 0
if y == self.c:
for i in range(1,len(data)):
x = x + int(data[i][y])
t = x/(len(data)-1)
return str(t)+'%'
else:
for i in range(1,len(data)):
x = x + int(data[i][y])
return str(x)
到目前为止,代码的实际错误是什么?任何错误消息? –
运行平稳。但我想在框架内调用函数时显示字符串,而不是控制台。 – Jones
我已经改变它,所以实例化Fram现在将显示字符串。你想发生什么样的情况,以便在a,b或c之间选择?如果你想让所有三个都发生,你可以反复调用这个函数并打包一个新的标签。 –