iT邦幫忙

0

關於Tkinter 元件Scrollbar的問題

  • 分享至 

  • xImage

各位大大
小弟我在使用Tkinter 元件Scrollbar的時候遇到無法向下垂直填滿的問題想請教到底是哪裡出了問題
我的部分程式碼

##建立Tkinter視窗
window = tk1.Tk()
window.title('資料庫寫入程式')
window.configure(bg="#7AFEC6")
window.geometry("350x150+300+200")

scrollbar = tk1.Scrollbar(window)          # 建立滾動條
scrollbar.grid(row=0, column=4, sticky=tk1.NS)  # 將滾動條加在右側,垂直填滿

執行結果如下
https://ithelp.ithome.com.tw/upload/images/20230131/20128836ElqnXqNxmc.jpg

win895564 iT邦新手 1 級 ‧ 2023-01-31 14:21:01 檢舉
感覺是你布局的問題?
雖然有段時間沒接觸tkinter了
ITT_T iT邦新手 4 級 ‧ 2023-02-01 09:21:34 檢舉
謝謝回應 感激不盡
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
JamesDoge
iT邦高手 1 級 ‧ 2023-02-01 07:50:16

試試看改用pack()方法加入滾動條。

import tkinter as tk

window = tk.Tk()
window.title('資料庫寫入程式')
window.configure(bg="#7AFEC6")
window.geometry("350x150+300+200")

##建立滾動條
scrollbar = tk.Scrollbar(window)

##建立文字方塊
text = tk.Text(window, height=6, width=40, yscrollcommand=scrollbar.set)
text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)

##加入滾動條
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
scrollbar.config(command=text.yview)

window.mainloop()

ITT_T iT邦新手 4 級 ‧ 2023-02-01 09:25:28 檢舉

感謝您的回答,想請教一下這個滾動條元件,是不是只能給文字方塊使用,因為我看到大部分網上的範例都是這麼去寫,如果我是要給整個"windows"小視窗使用的又該如何去寫呢?

0
sfc507
iT邦新手 4 級 ‧ 2023-02-02 14:32:12

如果我是要給整個"windows"小視窗使用的又該如何去寫呢?

好像沒辦法這麼做,但是可以調整到比較接近

import tkinter as tk

def update(event):
    canvas.configure(scrollregion=canvas.bbox("all"))

window = tk.Tk()
window.title('資料庫寫入程式')
window.configure(bg="#7AFEC6")
window.geometry("350x150+300+200")
text = []

## 調整canvas畫布的大小與視窗對齊
canvas = tk.Canvas(window, width=330,height=150, bg="#FFFFFF")
canvas.grid(column=0, row=0)
scrollbar = tk.Scrollbar(window, orient='vertical',command=canvas.yview)
scrollbar.grid(column=1, row=0,sticky = 'ns')

frame = tk.Frame(canvas)   # 建立 Frame
canvas.create_window((0,0),window=frame,anchor='nw')
frame.bind("<Configure>", update)
canvas.config(yscrollcommand=scrollbar.set)

## 測試效果,可放你想放的元件內容
for i in range(100):
    tmp_text = tk.Label(frame, text = 'Hello world '+ str(i))
    tmp_text.grid(column=0, row=i)
    text.append(tmp_text)



window.mainloop()

不知道有沒有接近你要的效果

參考:
https://stackoverflow.com/questions/3085696/adding-a-scrollbar-to-a-group-of-widgets-in-tkinter
https://blog.csdn.net/bigcarp/article/details/123846887

我要發表回答

立即登入回答