python - 无法使用滚动条正确调整 Frame 的大小,让我们说屏幕的全宽
问题描述
我的问题是我无法将程序内容的框架正确调整为屏幕的全宽或根本无法更改它。我得到的只是一个大的根窗口,左上角有一个小窗口,里面有我的内容。但我希望我的内容能够很长,可能会从显示器的一侧到另一侧。
from tkinter import *
def update_scrollregion(event):
photoCanvas.configure(scrollregion=photoCanvas.bbox("all"))
root = Tk()
root.geometry("1700x900")
#i tried to change the width below without success, it doesnt change anything either gets smaller nor bigger
photoFrame = Frame(root, width=250, height=190, bg="#EBEBEB")
photoFrame.grid()
photoFrame.rowconfigure(0, weight=1)
photoFrame.columnconfigure(0, weight=1)
photoCanvas = Canvas(photoFrame, bg="#EBEBEB")
photoCanvas.grid(row=0, column=0, sticky="nsew")
canvasFrame = Frame(photoCanvas, bg="#EBEBEB")
photoCanvas.create_window(0, 0, window=canvasFrame, anchor='nw')
txt=Text(canvasFrame, height=2, width=30)
Button(canvasFrame, text="Button1", borderwidth=0, bg="#EBEBEB").grid(row=1, column=1, padx=5, pady=5, sticky="nsew")
txt.insert(INSERT, "imagine a very long text here which should stretch from the left side of my screen to the right side of it")
txt.grid(row=1, column=2, padx=5, pady=5)
photoScroll = Scrollbar(photoFrame, orient=VERTICAL)
photoScroll.config(command=photoCanvas.yview)
photoCanvas.config(yscrollcommand=photoScroll.set)
photoScroll.grid(row=0, column=1, sticky="ns")
canvasFrame.bind("<Configure>", update_scrollregion)
root.mainloop()```
解决方案
您需要添加 .. root.rowconfigure(0, weight=1) 和 root.columnconfigure(0, weight=1) 并设置 photoFrame.grid(sticky=NSEW)。
from tkinter import *
def update_scrollregion(event):
photoCanvas.configure(scrollregion=photoCanvas.bbox("all"))
root = Tk()
root.geometry("1700x900")
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
#i tried to change the width below without success, it doesnt change anything either gets smaller nor bigger
photoFrame = Frame(root, width=250, height=190, bg="#EBEBEB")
photoFrame.rowconfigure(0, weight=1)
photoFrame.columnconfigure(0, weight=1)
photoFrame.grid(sticky=NSEW)
photoCanvas = Canvas(photoFrame, bg="#EBEBEB")
photoCanvas.rowconfigure(0, weight=1)
photoCanvas.columnconfigure(0, weight=1)
photoCanvas.grid(row=0, column=0, sticky="nsew")
canvasFrame = Frame(photoCanvas, bg="#EBEBEB")
canvasFrame.rowconfigure(1, weight=1)
canvasFrame.columnconfigure(2, weight=1)
canvasFrame.grid(sticky=NSEW)
photoCanvas.create_window(0, 0, window=canvasFrame, anchor='nw')
# txt = Text(canvasFrame, height=2, width=30)
txt = Text(canvasFrame)
txt.insert(INSERT, "imagine a very long text here which should stretch from the left side of my screen to the right side of it, imagine a very long text here which should stretch from the left side of my screen to the right side of it")
txt.grid(row=1, column=2, padx=5, pady=5, sticky=NSEW)
Button(canvasFrame, text="Button1", borderwidth=0, bg="#EBEBEB").grid(row=1, column=1, padx=5, pady=5, sticky="nsew")
photoScroll = Scrollbar(photoFrame, orient=VERTICAL)
photoScroll.config(command=photoCanvas.yview)
photoCanvas.config(yscrollcommand=photoScroll.set)
photoScroll.grid(row=0, column=1, sticky="ns")
canvasFrame.bind("<Configure>", update_scrollregion)
root.mainloop()
推荐阅读
- javascript - 无法连接 VueJS 和 expressJS
- javascript - Angular - 如何将数字转换为浮点值?
- r - 一个ggplot2图中的PCA图和方差表的比例 - R
- git - azure devops CI 管道错误:[错误]找不到与指定模式匹配的项目文件
- java - 是否可以使用以前的状态更新订阅消息?
- html - 如何在列表中设置列表样式
- vb.net - 邮件未送达
- php - 忽略空文件夹(403)并使用 .htaccess 将 URI 传递给 Laravel 控制器
- mysql - 是否可以为 MySQL 索引指定排序顺序?
- javascript - 如何连接来自 2 个数组的数据