Вам понадобятся методы .rowconfigure()
и .columnconfigure()
, чтобы получить то, что вы хотите, учитывая, что вы используете систему сеток для компоновки своих виджетов.
Чтобы помочь вам в дальнейшем, я закомментировал часть ваших кодов. Хотя ваш код отображал изображение, это неправильный способ создания изображения на холсте. Ваше изображение было создано в рамке, расположенной поверх холста. Таким образом, вы также не сможете прокручивать изображение, хотя вы можете видеть изображение и полосу прокрутки. Вместо этого используйте правильный код, который я вам дал.
Последний комментарий. Научитесь предоставлять упрощенный полный код в будущем, чтобы вы могли быстрее привлекать помощь. Вы можете узнать больше о mcve здесь.
from tkinter import *
class App(Frame):
def __init__(self, parent, *args, **kwargs):
Frame.__init__(self, parent, *args, **kwargs)
header = "Toplevel"
pfad = "NYCGifathon24-3.png" # change this to your image name
source = "Canvas Image"
self.karte(pfad,header,source)
def karte(self, pfad,header,source): #added 'self'
popup = Toplevel()
popup.title(header)
ksbar=Scrollbar(popup, orient=VERTICAL)
ksbar.grid(row=0, column=1, sticky="ns")
popCanv = Canvas(popup, width=600, height = 800,
scrollregion=(0,0,500,800)) #width=1256, height = 1674)
popCanv.grid(row=0, column=0, sticky="nsew") #added sticky
ksbar.config(command=popCanv.yview)
popCanv.config(yscrollcommand = ksbar.set)
## Commented codes are inappropriate.
## Wrong way to create an image in Canvas.
## Your scrollbars will not be able to scroll the image either
#kframe=Frame(popCanv, width=600, height = 800)
#kframe.grid(row=0, column=0)
#img = PhotoImage(master=kframe, file=pfad)
#imglabel = Label(kframe, image = img)
#imglabel.image = img
#imglabel.grid()
self.img = PhotoImage(file=pfad) #amended
image = popCanv.create_image(300, 400, image=self.img) #correct way of adding an image to canvas
popCanv.create_text(420,790,text=source)
popup.rowconfigure(0, weight=1) #added (answer to your question)
popup.columnconfigure(0, weight=1) #added (answer to your question)
#popup.mainloop()
if __name__ == "__main__":
root = Tk()
app = App(root)
root.mainloop()
person
Sun Bear
schedule
12.03.2017