1
儘管我相信我的問題很簡單,但我找不到答案,也無法找出如何解決此問題。 基本上,我有一個畫布,一旦按下按鈕,它就會被調整大小(如放大),但是,爲了覆蓋空洞滾動區域,我的滾動條不調整。Tkinter在畫布上調整大小滾動條不調整
有誰知道如何解決這個問題?
代碼:(有點討厭)
from Tkinter import *
class Graphic(Tk): #Graphical Interface
def __init__(self, x, y):
#INITIALIZATION
Tk.__init__(self)
self.border = 10
self.size_x = x
self.size_y = y
self.mouse = ""
self.cross_list = []
self.mode = ""
#SIZE
self.app_sizex = 1800
self.app_sizey = 1000
self.title("Graphic")
self.geometry(str(self.app_sizex+10) + "x" + str(self.app_sizey+40))
#CANVAS + BORDER
self.canvas = Canvas(self, width = self.app_sizex, height = self.app_sizey, scrollregion=(0,0,x,y))
self.canvas.grid(row=0, column=0, sticky="nsew")
self.canvas.create_line(self.border, self.border, self.border, y-self.border)
self.canvas.create_line(x-self.border, self.border, x-self.border, y-self.border)
self.canvas.create_line(self.border, self.border, x-self.border, self.border)
self.canvas.create_line(self.border, y-self.border, x-self.border, y-self.border)
self.cross_x = self.canvas.create_line(self.border, self.border, self.border, self.border)
self.cross_y = self.canvas.create_line(self.border, self.border, self.border, self.border)
#SCROLLING BARS
self.vbar=Scrollbar(self,orient=VERTICAL)
self.vbar.grid(row=0, column=1, sticky="ns")
self.vbar.config(command=self.canvas.yview)
self.hbar=Scrollbar(self,orient=HORIZONTAL)
self.hbar.grid(row=2, column=0, sticky="ew")
self.hbar.config(command=self.canvas.xview)
self.canvas.config(xscrollcommand=self.hbar.set, yscrollcommand=self.vbar.set)
#BUTTONS
self.buttonframe = Frame(self)
self.buttonframe.grid(row=1, column=0)
Button(self.buttonframe, text = "+", command=self.zoom_in).grid(row=0, column=0)
Button(self.buttonframe, text = "-").grid(row=0, column=1)
self.canvas.bind("<1>", lambda event: self.canvas.focus_set())
self.canvas.bind("a", lambda event: self.canvas.xview_scroll(-1, "units"))
self.canvas.bind("d", lambda event: self.canvas.xview_scroll(1, "units"))
self.canvas.bind("w", lambda event: self.canvas.yview_scroll(-1, "units"))
self.canvas.bind("s", lambda event: self.canvas.yview_scroll(1, "units"))
self.canvas.focus_set()
def zoom_in(self):
#Clean canvas
self.canvas.delete("all")
self.size_x = self.size_x * 1.1
self.size_y = self.size_y * 1.1
x=self.size_x
y=self.size_y
self.canvas.scrollregion=(0,0,self.size_x,self.size_y)
self.canvas.create_line(self.border, self.border, self.border, y-self.border)
self.canvas.create_line(x-self.border, self.border, x-self.border, y-self.border)
self.canvas.create_line(self.border, self.border, x-self.border, self.border)
self.canvas.create_line(self.border, y-self.border, x-self.border, y-self.border)
#SCROLLING BARS
self.vbar.config(command=self.canvas.yview)
self.hbar.config(command=self.canvas.xview)
self.canvas.config(xscrollcommand=self.hbar.set, yscrollcommand=self.vbar.set)
graphics_window = Graphic(1000, 1000)
graphics_window.mainloop()
如果你提供了一個更完整的例子,我們可能能夠做些什麼。 – user1683793
我現在編輯它。 完成。 –
請提供一個完整的示例。見http://www.stackoverflow.com/help/mcve –