首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在初始化后使用鼠标拖动更改tkinter小部件的高度(或宽度)?

如何在初始化后使用鼠标拖动更改tkinter小部件的高度(或宽度)?
EN

Stack Overflow用户
提问于 2021-08-27 16:32:04
回答 1查看 149关注 0票数 0

我找到的最接近的方法是用ttk.Separator打包分开的小部件,改变光标,并触发一个函数,当鼠标在分隔符上开始单击运动时,调整顶部和底部小部件的大小。问题是,它不能工作,因为我得到了小故障,我找不到原因。请检查以下代码:

代码语言:javascript
复制
import tkinter as tk

from tkinter import ttk

from ttkwidgets.autocomplete import AutocompleteEntryListbox

def resize(event):
    searchbox.config(height=searchbox.winfo_height()+event.y)
    template.config(height=template.winfo_height()-event.y)

window = tk.Tk()

frame_navigator = tk.Frame(window)

frame_navigator.configure(background="white",width=300,height=300)
frame_navigator.pack_propagate(0)

searchbox = AutocompleteEntryListbox(frame_navigator,completevalues=[],allow_other_values=False)
searchbox.pack(side=tk.TOP,expand=1,fill=tk.BOTH)

separator = ttk.Separator(frame_navigator,orient='horizontal',cursor="size_ns")
separator.bind("<B1-Motion>",resize)
separator.pack(side=tk.TOP,fill=tk.X)

template = tk.Listbox(frame_navigator,exportselection=False)
template.pack(side=tk.TOP,expand=1,fill=tk.BOTH)

frame_navigator.pack(side=tk.TOP,expand=1,fill=tk.BOTH)

感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-27 17:15:28

我没有安装ttkwidgets,但为了测试,我用tk.Listbox替换了AutocompleteEntryListbox,并找到了一个使用tk.PanedWindow的解决方案,这是一个专门为此而设计的小部件。它没有理由不能与不同的小部件一起工作。将PanedWindow的orient设置为tkinter.constants.VERTICAL以更改高度,并使用frame_navigator.add()而不是widget.pack()使其工作。完成的代码:

代码语言:javascript
复制
import tkinter as tk
from tkinter.constants import *

window = tk.Tk()

frame_navigator = tk.PanedWindow(window, orient=VERTICAL)

frame_navigator.configure(background="white", width=300, height=300)
frame_navigator.pack_propagate(0)

searchbox = tk.Listbox(frame_navigator)
frame_navigator.add(searchbox)

template = tk.Listbox(frame_navigator, exportselection=False)
frame_navigator.add(template)

frame_navigator.pack(side=tk.TOP, expand=1, fill=tk.BOTH)

window.mainloop()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68956736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档