簡體   English   中英

如何將滾動條附加到 tkinter 上的文本框?

[英]How can i attach my scroll bar to my text box on tkinter?

我試圖為我的文本框使用垂直滾動條,但遇到了一些問題:

  1. 我無法讓滾動條直接觸摸文本框的右側(因此它們已連接)
  2. 滾動條似乎不會影響我的文本框

我查看了一些解決方案,但似乎都沒有。 這是我的代碼:

from tkinter import *

writtenQ = Tk()
writtenQ.title("Written Response Question")
writtenQ.resizable(0,0)

header = LabelFrame(writtenQ, bg="white")
content = LabelFrame(writtenQ, bg="white")

header.columnconfigure(0, weight=1) # Forces column to expand to fill all available space
homeButton=Button(content,width=50,height=50)
try:
    homeIcon=PhotoImage(file="yes.png")
    homeButton.config(image=homeIcon)
    homeButton.image = homeIcon
except TclError:
    print("Home")
homeButton.grid(row=1, sticky="w", padx=15, pady=2)

#the image of the question will be put here
titleHeader = Label(content, text="Question Image here",pady=15, padx=20, bg="white", font=("Ariel",20, "bold"), anchor="w", relief="solid", borderwidth=1)
titleHeader.grid(row=2, column=0, columnspan=3, padx=15, pady=5, ipadx=370, ipady=150)

#this will allow the user to input their written response
answerInput = Text(content, width = 60, borderwidth=5, font=("HelvLight", 18)) 
answerInput.grid(row=3, column=0, ipady = 10, sticky="w", padx=(20,0), pady=20)
answerScrollBar= Scrollbar(content, command=answerInput.yview, orient="vertical")
answerScrollBar.grid(row=3, column=1, sticky="w")

submitButton = Button(content, borderwidth=1, font=("Ariel", 22), text="Submit", bg="#12a8e3", fg="black", activebackground="#12a8e3", relief="solid")
submitButton.grid(row=3, column=2, ipady=50, ipadx=70, sticky="nw", pady=20)

header.grid(row=0, sticky='NSEW')
content.grid(row=1, sticky='NSEW')

您是否嘗試過這里的解決方案?

假設文本小部件稱為文本。 您的代碼可能是(不包括窗口的設置):

import tkinter
import tkinter.ttk as ttk
scrollb = ttk.Scrollbar(self, command=text.yview)
scrollb.grid(row=0, column=1, sticky='nsew')
text['yscrollcommand'] = scrollb.set

我已經從Honest Abe的回答中挑選出我認為對你有用的東西。 希望它有所幫助。 請記住在使用代碼之前設置您的 window...

配置滾動條需要雙向連接:滾動條需要調用widget的yviewxview方法,widget需要調用滾動條的set方法。

通常,這分三個步驟完成,如下例所示:

answerInput = Text(...)
answerScrollBar= Scrollbar(..., command=answerInput.yview)
answerInput.configure(yscrollcommand=answerScrollBar.set)

你忘記了最后一步。


與實際運行的滾動條無關,您將希望能夠看到滾動條。 您需要為滾動條使用sticky="ns" ,以便它在Y 方向上伸展。 否則它將只有幾十個像素高。

answerScrollBar.grid(row=3, column=1, sticky="ns")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM