日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python为text添加滚动条_在Tkinter中向一组小部件添加滚动条

發布時間:2023/12/4 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python为text添加滚动条_在Tkinter中向一组小部件添加滚动条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

您只能將滾動條與一些小部件關聯起來,根小部件和Frame不是那組小部件的一部分。

最常見的解決方案是創建一個畫布小部件,并將滾動條與該小部件關聯起來。然后,將包含標簽小部件的框架嵌入到畫布中。確定框架的寬度/高度,并將其輸入畫布。scrollregion選項,以便滾動區域與框架的大小完全匹配。

在畫布上直接繪制文本項并不困難,因此如果畫布框架內嵌解決方案看起來過于復雜,您可能需要重新考慮這種方法。由于要創建網格,每個文本項的坐標將非常容易計算,特別是如果每一行的高度相同(如果使用單一字體,可能就是這樣)。

要在畫布上直接繪圖,只需計算出所使用字體的線條高度(這方面有一些命令)。然后,每個y坐標是row*(lineheight+spacing)..x坐標將是基于每列中最寬項的固定數。如果為列中的所有項都賦予標記,則可以使用單個命令調整列中所有項的x坐標和寬度。

面向對象的解決方案

下面是一個使用面向對象方法的畫布框架內嵌解決方案的示例:import?tkinter?as?tkclass?Example(tk.Frame):

def?__init__(self,?root):

tk.Frame.__init__(self,?root)

self.canvas?=?tk.Canvas(root,?borderwidth=0,?background="#ffffff")

self.frame?=?tk.Frame(self.canvas,?background="#ffffff")

self.vsb?=?tk.Scrollbar(root,?orient="vertical",?command=self.canvas.yview)

self.canvas.configure(yscrollcommand=self.vsb.set)

self.vsb.pack(side="right",?fill="y")

self.canvas.pack(side="left",?fill="both",?expand=True)

self.canvas.create_window((4,4),?window=self.frame,?anchor="nw",

tags="self.frame")

self.frame.bind("",?self.onFrameConfigure)

self.populate()

def?populate(self):

'''Put?in?some?fake?data'''

for?row?in?range(100):

tk.Label(self.frame,?text="%s"?%?row,?width=3,?borderwidth="1",

relief="solid").grid(row=row,?column=0)

t="this?is?the?second?column?for?row?%s"?%row

tk.Label(self.frame,?text=t).grid(row=row,?column=1)

def?onFrameConfigure(self,?event):

'''Reset?the?scroll?region?to?encompass?the?inner?frame'''

self.canvas.configure(scrollregion=self.canvas.bbox("all"))if?__name__?==?"__main__":

root=tk.Tk()

Example(root).pack(side="top",?fill="both",?expand=True)

root.mainloop()

程序解決方案

以下是不使用對象的解決方案:import?tkinter?as?tkdef?populate(frame):

'''Put?in?some?fake?data'''

for?row?in?range(100):

tk.Label(frame,?text="%s"?%?row,?width=3,?borderwidth="1",

relief="solid").grid(row=row,?column=0)

t="this?is?the?second?column?for?row?%s"?%row

tk.Label(frame,?text=t).grid(row=row,?column=1)def?onFrameConfigure(canvas):

'''Reset?the?scroll?region?to?encompass?the?inner?frame'''

canvas.configure(scrollregion=canvas.bbox("all"))root?=?tk.Tk()canvas?=?tk.Canvas(root,?borderwidth=0,?background="#ffffff")frame?=

tk.Frame(canvas,?background="#ffffff")vsb?=?tk.Scrollbar(root,?orient="vertical",?command=canvas.yview)canvas.configure

(yscrollcommand=vsb.set)vsb.pack(side="right",?fill="y")canvas.pack(side="left",?fill="both",?expand=True)canvas.create_window((4,4),

window=frame,?anchor="nw")frame.bind("",?lambda?event,?canvas=canvas:?onFrameConfigure(canvas))populate(frame)root.mainloop()

注:若要在python2.x中執行此操作,請使用Tkinter而不是tkinter在導入語句中

總結

以上是生活随笔為你收集整理的python为text添加滚动条_在Tkinter中向一组小部件添加滚动条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。