我創建了一個從列表中讀取某些字符串的函數。在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之間選擇?如果你想讓所有三個都發生,你可以反覆調用這個函數並打包一個新的標籤。 –