【发布时间】:2019-10-01 19:20:10
【问题描述】:
我正在尝试使用滚动条创建固定大小的画布小部件。有问题的画布可能非常大,并且几乎肯定会比包含它的框架大得多。我想将画布保持在固定大小,但能够调整包含它的窗口的大小。我遇到的问题是我不知道如何将滚动条绑定到窗口边缘。
我已经尝试过 .pack 和 .grid。 .grid 的明显问题是它只会将滚动条放在画布旁边。不幸的是,画布必须有一个固定的大小,总是比窗口大。每当我 .pack 时,画布似乎会随着窗口调整大小,即使我明确禁用展开并将填充设置为无。
为了清楚地看到画布区域,我已将背景设置为黑色。
import tkinter as tk
from tkinter import *
class DialogueCreation(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.xbar = tk.Scrollbar(parent, orient=HORIZONTAL)
self.xbar.pack(side=BOTTOM, fill=X)
self.ybar = tk.Scrollbar(parent)
self.ybar.pack(side=RIGHT, fill=Y)
self.item_canvas = tk.Canvas(parent, width=5000, height=5000, xscrollcommand=self.xbar.set, yscrollcommand=self.ybar.set)
self.item_canvas.pack(side=LEFT, expand=FALSE, fill=None)
self.item_canvas.configure(background='black')
if __name__ == '__main__':
root = tk.Tk()
DialogueCreation(root)
root.title("Editor")
root.mainloop()
画布是一个巨大的 5000x5000,所以当窗口很小的时候我肯定可以滚动。我希望滚动条与窗口边缘保持齐平,而无需调整画布大小。无论窗口有多大或多小,滚动条都会保持休眠状态。我假设画布正在随窗口调整大小,这绝对不是预期的结果。
最终,此画布上将显示多张图像,并且这些图像在画布上的位置不得更改。我认为问题不在于我如何绑定滚动条(我检查了该网站上的其他几篇帖子以确保),但如果我错过了类似的明显内容,这也不是不正常的。
【问题讨论】:
-
我必须在示例代码中添加以下行才能看到画布:self.pack(side=tk.LEFT, expand=tk.TRUE, fill=tk.BOTH) 到末尾DialogueCreation init 函数。
标签: python tkinter scrollbar tkinter-canvas