python如何让frame带滚轴

围绕这个主题,我百度了好几回,也放弃过好几回。却只能看到,有二个跟我遇到同样的问题人,而且这二个给的结果都是用pack_propagate(0)。可惜,并不是正确的答案,不知道是不是我的版本问题。
后来,我改去google和stackoverflow搜索,终于给我找到一个有效的方案。他采用的是canvas+frame的方式(https://stackoverflow.com/questions/19245941/adding-a-scrollbar-to-a-frame-using-tkinter-python),我把上面的代码稍作修改,精简再精简。如下:
[code lang=”python”]
from tkinter import *

class demo(object):
def __init__(self, master):
self.master = master
# canvas
self.canvas = Canvas(self.master, height=200)
self.canvas.grid(row=0, column=0)

# scroll
self.scroll = Scrollbar(self.master, command=self.canvas.yview)
self.scroll.grid(row=0, column=1, sticky=’nsew’)
self.canvas[‘yscrollcommand’] = self.scroll.set

# frame
self.frame = Frame(self.master)
self.canvas.create_window((0, 0), window=self.frame, anchor=’nw’)

# label list
for x in range(50):
Label(self.frame, text=str(x) + " row…").grid(row=x, column=0)

# other
Button(self.master, text="activate scroll", command=self.activate_scroll).grid(row=0, column=2)
self.activate_scroll()

def activate_scroll(self):
self.canvas.configure(scrollregion=self.canvas.bbox(‘all’))

root = Tk()
demo(root)
root.mainloop()
[/code]

不知不觉二周过去了,我的文章还是那么几条,感觉有点寒酸

关于python进度条

最近在做一个应用程序,用Python写的。一边学习,一边实现自己想要的功能。做了好几天,才把登录做好。

现在,在做其中一个功能时,想实现进度条的效果。百度了老半天(英文太烂,比较少用stackoverflow),发现都找不到理想的demo,还有关于Python版本的问题,有时候找来的代码,执行不了,也是很头痛的。

最后,终于给我找到了一个用canvas画布实现的示例,貌似符合我的要求(网址:https://blog.csdn.net/li1615882553/article/details/79204072),废话不多说,直接上我修改后的示例代码
[code lang=”python”]from tkinter import *
import time

# 进度条
class Progress(object):
# 构造函数
def __init__(self, app=None):
# tk窗口
self.app = app
# 画布
self.canvas = Canvas(self.app, width=110, height=30)
# 成员变量
self.tips = StringVar()
# 调用画面内容
self.layout()

# 画布内容
def layout(self):
# 画布的位置
self.canvas.grid(row=0, column=0)
# 进度条的边框线
self.canvas.create_rectangle(10, 10, 100, 25, width=1, outline="blue")
# 文件提示
Label(self.app, textvariable=self.tips).grid(row=0, column=1)

# 更新状态
def update(self, percent=None):
# 进度条
line = self.canvas.create_rectangle(10, 10, 0, 25, width=0, fill="blue")
# 修改进度条长度
self.canvas.coords(line, [10, 10, percent, 25])
# 修改文字提示
self.tips.set(str(percent) + ‘%’)
# 刷新页面
self.app.update()

root = Tk()

p = Progress(root)
for i in range(25):
time.sleep(0.1)
p.update((i + 1) * 4)

mainloop()[/code]