我在使用tkinter的python中創建json編輯器。滾動條無法在畫布上工作
我已經添加了一個滾動條,通過創建一個Canvas
,並在其中放置一個Frame
。
然後我將Scrollbar
命令設置爲canvas.yview。
這兩件事搞砸了,我不知道爲什麼。
當我按下滾動按鈕(向上和向下箭頭)畫布不滾動
我包裝滾動條到窗口(根)現在代替幀,因爲每當我將它包裝到框架上,tkinter應用程序無法打開,並且我的電腦風扇開始啓動...任何人都知道這裏發生了什麼? (因此,滾動條是微小的,如果你嘗試運行的代碼)
這裏是我的代碼:
編輯>代碼縮短
import Tkinter as tk
import webbrowser
import os
import bjson as bj
class App:
def __init__(self, master):
self.window = master
self.window.geometry("800x450")
self.canvas = tk.Canvas(self.window, width=800, height=400)
self.master = tk.Frame(self.canvas, width=800, height=400)
self.canvas.pack()
self.master.place(x=0, y=0)
scrollbar = tk.Scrollbar(self.window)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
scrollbar.config(command=self.canvas.yview)
def init(self):
master = self.master
self.frames = {
"Home": HomeFrame(master)
}
self.openFrame = None
self.loadFrame("Home")
def loadFrame(self, frame):
self.openFrame = self.frames[frame]
self.openFrame.display()
def setTitle(self, t):
self.window.title(t)
class Frame:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(master)
self.frame.grid(row=0, column=0, sticky='news')
self.init()
self.frame_create()
def display(self):
self.frame.tkraise() #raises frame to top
self.frame_load() #initializes the frame
def clear(self):
for widget in self.frame.winfo_children():
widget.destroy()
def init(self): pass
def frame_load(self): pass
def frame_create(self): pass
class HomeFrame(Frame):
def frame_create(self):
p = self.frame
for i in range(20):
tk.Label(p, text="This is content... " + str(i)).pack()
for j in range(2):
LineBreak(p)
def LineBreak(p):
tk.Label(p, text="").pack()
root = tk.Tk()
glob = {}
app = App(root)
app.init()
root.mainloop()
這是一個有點長,有點混亂,但你應該看看我如何在App
__init__
中添加滾動條任何人都有任何想法發生了什麼上,以及如何解決它?
在此先感謝!
請刪除所有可能的代碼,同時仍然提供一個展示不良行爲的示例。請參閱[如何創建最小,完整和可驗證示例](http://www.stackoverflow.com/help/mcve) –
我已將代碼更新爲縮短版本,但仍存在相同問題。謝謝你的幫助。 –