滚动条进入python tkinter讨论

伊兰·罗斯勒(Ilan Rossler)
from tkinter import *

window = Tk()

ia_answers= "test\n"
input_frame = LabelFrame(window, text="User :", borderwidth=4)
input_frame.pack(fill=BOTH, side=BOTTOM)

input_user = StringVar()
input_field = Entry(input_frame, text=input_user)
input_field.pack(fill=BOTH, side=BOTTOM)

def onFrameConfigure(canvas):
'''Reset the scroll region to encompass the inner frame'''
    canvas.configure(scrollregion=canvas.bbox("all"))
canvas = Canvas(window, borderwidth=0, background="white")
ia_frame = LabelFrame(canvas, text="Discussion",borderwidth = 15, height = 100, width = 100)
ia_frame.pack(fill=BOTH, side=TOP)
scroll = Scrollbar(window, orient="vertical", command=canvas.yview)
canvas.configure(yscrollcommand=scroll.set)

scroll.pack(side=RIGHT, fill=Y)
canvas.pack(fill=BOTH, expand=True)
canvas.create_window((4,4), window=ia_frame, anchor="nw")
ia_frame.bind("<Configure>", lambda event, canvas=canvas:onFrameConfigure(canvas))




user_says = StringVar()
user_text = Label(ia_frame, textvariable=user_says, anchor = NE, justify =   RIGHT, bg="white") 
user_text.pack(fill=X) 

ia_says = StringVar()
ia_text = Label(ia_frame, textvariable=ia_says, anchor = NW, justify = LEFT, bg="white") 
ia_text.pack(fill=X) 

user_texts = []
ia_texts = []
user_says_list = []
ia_says_list = []
def Enter_pressed(event):
    """Took the current string in the Entry field."""
    input_get = input_field.get()
    input_user.set("")
    user_says1 = StringVar()
    user_says1.set(input_get + "\n")
    user_text1 = Label(ia_frame, textvariable=user_says1, anchor = NE, justify =   RIGHT, bg="white") 
    user_text1.pack(fill=X)
    user_texts.append(user_text1)
    user_says_list.append(user_says1)
    ia_says1 = StringVar()
    ia_says1.set(ia_answers)
    ia_text1 = Label(ia_frame, textvariable=ia_says1, anchor = NW, justify = LEFT, bg="white") 
    ia_text1.pack(fill=X)
    ia_texts.append(ia_text1)
    ia_says_list.append(ia_says1)

input_field.bind("<Return>", Enter_pressed)
window.mainloop()

嗨,我尝试用tkinter构建一个GUI,但是有两个问题,LabelFrame / Canvas不能完全填满窗口,并且我无法使滚动条自动向下滚动。您能帮我吗,非常感谢。伊兰·罗斯勒(Ilan Rossler)。

布莱恩·奥克利(Bryan Oakley)

由于内部框架是由画布管理的,因此您需要手动控制内部框架的宽度。您可以更改绑定到<Configure>画布事件的宽度(即:当画布更改大小时,必须更改框架的大小)。

您将需要能够在画布上引用窗口对象,这意味着您需要保存ID或为其添加标签。

这是为其提供标签的示例:

canvas.create_window((4,4), window=ia_frame, anchor="nw", tags=("innerFrame",))

以下是当画布更改大小时如何更改宽度的方法:

def onCanvasConfigure(event):
    canvas = event.widget
    canvas.itemconfigure("innerFrame", width=canvas.winfo_width() - 8)

canvas.bind("<Configure>", onCanvasConfigure)

要向下滚动,请yview像滚动条一样调用命令。您需要在窗口有机会刷新进行此操作

例如,将其添加为以下内容的最后一行Enter_pressed

def Enter_pressed(event):
    ...
    canvas.after_idle(canvas.yview_moveto, 1.0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python Tkinter滚动条摇晃滚动

来自分类Dev

类中的Python Tkinter滚动条

来自分类Dev

Python Tkinter滚动条问题

来自分类Dev

Tkinter怪异的滚动条

来自分类Dev

滚动条-Tkinter GUI-Python 3

来自分类Dev

Python Tkinter滚动条不起作用

来自分类Dev

python tkinter,滚动条缺少旋钮(拇指)

来自分类Dev

tkinter滚动条没有滚动条

来自分类Dev

Tkinter滚动条不滚动

来自分类Dev

滚动条tkinter不滚动

来自分类Dev

Tkinter滚动条不滚动

来自分类Dev

Tkinter 滚动条不滚动

来自分类Dev

与Tkinter讨论

来自分类Dev

控制Tkinter中滚动条的位置

来自分类Dev

Tkinter滚动条出现问题

来自分类Dev

tkinter.Listbox滚动条yview

来自分类Dev

在Tkinter中控制滚动条的位置

来自分类Dev

Tkinter滚动条不起作用

来自分类Dev

带网格的Tkinter滚动条:滚动到框架上方,滚动条为灰色

来自分类Dev

Python Tkinter:将滚动条附加到列表框而不是窗口

来自分类Dev

如何使用python 3.8在tkinter中的画布中创建滚动条

来自分类Dev

Python-Tkinter删除滚动条和条目小部件之间的空间

来自分类Dev

python tkinter按钮在画布网格中绑定并将滚动条添加到画布

来自分类Dev

如何在python 3.4中使用tkinter添加2个滚动条?

来自分类Dev

Python tkinter:画布滚动条出现但不起作用

来自分类Dev

Python3 tkinter 在小部件上放置了不可见的滚动条?

来自分类Dev

Python Tkinter - 在画布边缘放置垂直和水平滚动条

来自分类Dev

Python tkinter 使用画布动态创建带有滚动条的窗口

来自分类Dev

Tkinter中消息小部件的滚动条