我有一个tkinter列表框,它位于画布内的一个框架内。滚动条通过以下代码工作得非常好:
messagesList.config(yscrollcommand = scrollbar.set)
scrollbar.config(command=messagesList.yview)
但是,我希望滚动条更长,这样我就可以真正滚动。我尝试了一些方法,比如用padx和pady使框架更大或占用更多空间。有没有办法让滚动条变长
当前状态的图像:
完整代码:
import tkinter as tk
from tkinter import ttk
import tkinter.font as tkFont
root = tk.Tk()
root.title("Messager")
root.geometry("1300x700")
root.resizable(height = 0, width = 0)
#makes window not resizable
class Elements:
def __init__(self, main):
def sendMessage():
user = userName.get()
message = userMessage.get()
print(user+ " username")
print(message + " message")
theCan = tk.Canvas(main)
titleFrame = tk.LabelFrame(main)
mainFrame = tk.LabelFrame(theCan)
greeting = tk.Label(titleFrame, text="Messager", bg = "#74a5f2", font = (None, 35))
userName = tk.Entry(titleFrame, font = (None, 15))
userName.insert(0, "An Unnamed Scrub")
userMessage = tk.Entry(titleFrame, font = (None, 15))
userMessage.insert(0,"Your Message")
sendButton = tk.Button(titleFrame, command = sendMessage, text = "Send!", bg = "#74a5f2", font = (None, 22))
titleMessage = tk.Label(mainFrame, text = "MESSAGER", bg = "#74a5f2", font = (None, 50))
messagesList = tk.Listbox(mainFrame)
scrollbar = tk.Scrollbar(mainFrame, orient=tk.VERTICAL, relief = 'flat')
messagesList.config(yscrollcommand = scrollbar.set)
scrollbar.config(command=messagesList.yview)
testList = ["apple", "orange","apple", "orange","apple", "orange","apple", "orange","apple", "orange","apple", "orange","apple", "orange"]
for item in testList:
messagesList.insert(tk.END, item)
placeholder = tk.Label(main, text = " ")
placeholder1 = tk.Label(main, text = " ")
placeholder2 = tk.Label(main, text = " ")
placeholder3 = tk.Label(main, text = " ")
placeholder4 = tk.Label(main, text = " ")
placeholder5 = tk.Label(main, text = " ")
placeholder6 = tk.Label(main, text = " ")
placeholder7 = tk.Label(main, text = " ")
placeholder8 = tk.Label(main, text = " ")
placeholder9 = tk.Label(main, text = " ")
placeholder10 = tk.Label(main, text = " ")
placeholder11 = tk.Label(main, text = " ")
placeholder12 = tk.Label(main, text = " ")
placeholder13 = tk.Label(main, text = " ")
placeholder.grid(row = 1, column = 1)
placeholder1.grid(row = 2, column = 2)
placeholder2.grid(row = 3, column = 3)
placeholder3.grid(row = 4, column = 4)
placeholder4.grid(row = 5, column = 5)
placeholder5.grid(row = 6, column = 6)
placeholder6.grid(row = 7, column = 7)
placeholder7.grid(row = 8, column = 8)
placeholder8.grid(row = 1, column = 9)
placeholder9.grid(row = 1, column = 10)
placeholder10.grid(row = 1, column = 11)
placeholder11.grid(row = 1, column = 12)
placeholder12.grid(row = 1, column = 13)
placeholder13.grid(row = 1, column = 14)
#placeholders to move the mainframe frame to the center
titleFrame.grid(row = 1, padx = 20, pady = 20)
greeting.grid(pady = 20)
userName.grid()
userMessage.grid(pady = 20)
sendButton.grid()
mainFrame.grid()
titleMessage.grid(pady = 20)
messagesList.grid()
theCan.grid(row = 1, column = 15, pady = 20)
scrollbar.grid(sticky = "ne", rowspan = 5)
postEverything = Elements(root)
root.mainloop()
如前所述,您需要使用
grid
将框和滚动条放在同一行上还请注意,我已经将sticky属性更改为“ns”,这意味着滚动条将拉伸以适合行并匹配messagesList小部件的高度
相关问题 更多 >
编程相关推荐