python - Tkinter 有没有办法在画布窗口中调整滚动条的大小
问题描述
我已经制作了这个窗口的大部分内容,并且希望不必重新启动,因为滚动条无法正确调整大小。问题是滚动条对于列表框来说显得太小了,我希望它们分别跨越每个框的整个高度,但到目前为止,它们只能在你向箭头发送垃圾邮件时才能起作用,因为实际的滚动位无法移动缺乏的空间。任何帮助将不胜感激,现在坚持了一段时间。(使用python 3.8)。
import tkinter as tk
from tkinter import *
setup = tk.Tk()
setup.title("Set Up Game")
setup.geometry("450x650")
setup.resizable(width=False, height=False)
select_Box = tk.Canvas(setup, width=450, height=496, bg="#cd3636")
select_Box.pack(padx=10)
listbox1 = Listbox(setup, width=33, height=30)
listbox1_win = select_Box.create_window(110,250, window=listbox1)
listbox2 = Listbox(setup, width=33, height=30)
listbox2_win = select_Box.create_window(320,250, window=listbox2)
scroll1 = Scrollbar(setup)
scroll1_win = select_Box.create_window(200,250, window=scroll1)
scroll2 = Scrollbar(setup)
scroll2_win = select_Box.create_window(410,250, window=scroll2)
listbox1.config(yscrollcommand = scroll1.set, selectmode=SINGLE)
scroll1.config(command = listbox1.yview)
listbox2.config(yscrollcommand = scroll2.set, selectmode=SINGLE)
scroll2.config(command = listbox2.yview)
nameArray = ["Bulbasaur", "Ivysaur", "Venasaur", "Charmander", "Charmelion", "Charazard", "Squirtle", "Wartortle", "Blastoise", "Lucario", "Garchomp", "Gengar", "Snorlax", "Reuniclus", "Joel","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder","placeholder"]
for item in nameArray:
listbox1.insert(END, item)
setup.mainloop()
解决方案
如果您想使用 Canvas.create_window 放置所有小部件,您所要做的就是定义滚动条的高度(您可能需要稍微调整一下数字以使其大小合适)。
因此,您的代码中的编辑片段将是:
scroll1 = Scrollbar(setup)
scroll1_win = select_Box.create_window(200,
250,
height=480, # this is all you're missing!
window=scroll1)
推荐阅读
- java - 使用 JAX-RS 中提供的 StreamingOutput 下载大量数据
- swift4 - iOS 11 中的 UIBarButtonItems 间距问题
- android - 读取txt文件时保持空白不变
- python - 在 kivy 中对文本应用 .upper() 方法
- php - 为什么 $request 中的数组包含数字周围的引号
- grails - grails 3.3.9,添加 settings.gradle 后插件无法编译
- javascript - 从 jquery 中的查询字符串中选择一个值将返回多个值。如何选择正确的值
- scala - 如何在实际数据(文本文件或 sql)上使用 Spark 的 PrefixSpan?
- mule - DataWeave 和区分大小写
- c++ - 实例化成员模板函数时的错误 (?) 编译器行为