我們現在有一個使用PyQt創建的功能齊全的GUI。我的合作伙伴編寫了一個在Tkinter中繪製數據集的函數。我的問題是,我們如何將兩者結合起來,讓他們一起工作?Python - 爲PyQt構件添加Tkinter圖形
這裏是圖形功能:
def createGraph(self):
import tkinter as tk
# Send in data as param, OR
#data = [17, 20, 15, 10, 7, 5, 4, 3, 2, 1, 1, 0]
# Recieve data within function
s.send("loadgraph")
inputString = repr(s.recv(MSGSIZE))
#inputString = "-20 15 10 7 5 -4 3 2 1 1 0"
print(inputString)
data = [int(x) for x in inputString.split()]
root = tk.Tk()
root.title("FSPwners")
screen_width = 400
screen_height = 700
screen = tk.Canvas(root, width=screen_width, height=screen_height, bg= 'white')
screen.pack()
# highest y = max_data_value * y_stretch
y_stretch = 15
# gap between lower canvas edge and x axis
y_gap = 350
# stretch enough to get all data items in
x_stretch = 10
x_width = 20
# gap between left canvas edge and y axis
x_gap = 20
for x, y in enumerate(data):
# calculate reactangle coordinates (integers) for each bar
x0 = x * x_stretch + x * x_width + x_gap
y0 = screen_height - (y * y_stretch + y_gap)
x1 = x * x_stretch + x * x_width + x_width + x_gap
y1 = screen_height - y_gap
# draw the bar
print(x0, y0, x1, y1)
if y < 0:
screen.create_rectangle(x0, y0, x1, y1, fill="red")
else:
screen.create_rectangle(x0, y0, x1, y1, fill="green")
# put the y value above each bar
screen.create_text(x0+2, y0, anchor=tk.SW, text=str(y))
root.mainloop()
當該方法是由本身運行時,它創建一個與圖中的彈出框。現在我們希望它在我們當前的gui中按下按鈕時創建一個彈出圖。我們如何才能使它工作?如果我們只是在我們的GUI中點擊一個按鈕時調用createGraph()
,我們得到錯誤: 發送到實例x009x的無法識別的選擇器...
問題是什麼?謝謝!
這個功能看起來並不過於複雜。我認爲用PyQt重寫它會比嘗試整合PyQt和Tk更好。 – Avaris 2011-12-13 23:19:50