python - tkinter 主题导致程序滞后
问题描述
tkinter 中的框架,框架由多个迷你长画布(包含一些文本和一个按钮)组成,可以使用滚动条上下滚动。我还使用 tkinter 主题让我的 gui 看起来不错。但是由于某种原因,一旦我在 gui 中添加,框架会在上下滚动时有点滞后,就像画布相互碰撞一样,他们要解决这个问题吗?
这是代码
from tkinter import *
from ttkthemes.themed_tk import ThemedTk
from tkinter import *
from tkinter.ttk import *
import tkinter as tk
from tkinter import ttk
class tkinterprogram(ThemedTk):
def __init__(self, *args, **kwargs):
ThemedTk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage,Task):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
frame.winfo_toplevel().geometry("1024x720")
class StartPage(tk.Frame):
def __init__(self, parent, controller):
ttk.Frame.__init__(self, parent)
l = Canvas(self, bg='#4A4949')
l.pack(fill='both', expand='True')
global canvascon
canvascon = Canvas(l, height=400,width=1500,bg='#4A4949',highlightthickness=0)
global frame2
frame2 = Frame(canvascon)
global myscrollbar
myscrollbar = Scrollbar(l, orient="vertical",command=canvascon.yview)
canvascon.create_window((0, 0), window=frame2,width=15000,anchor='nw')
canvascon.place(x=25,y=150,relheight=0.558,relwidth=0.87)
myscrollbar.pack(side=RIGHT, fill=Y,pady=25)
Button(l,text='go',command=lambda: meth()).pack()
def meth():
for count in range(25):
c = Canvas(frame2, height=50, bg="#1E2133",highlightthickness=5,highlightbackground='#4A4949')
lab = tk.Label(frame2, text='running',bg='#1E2133',fg='#EFEFEF')
lab_window = c.create_window(10,15, window=lab,anchor=tk.NW)
stop = tk.Button(frame2, text='STOP')
stop_window = c.create_window(200, 15, window=stop, anchor=tk.NW)
c.pack(fill=X,expand=True)
frame2.update() # update frame2 height so it's no longer 0 ( height is 0 when it has just been created )
canvascon.configure(yscrollcommand=myscrollbar.set, scrollregion="0 0 0 %s" % frame2.winfo_height())
class Task(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
app = tkinterprogram()
app.get_themes()
app.set_theme('scidgrey')
app.mainloop()
感谢您提前提供任何帮助。
解决方案
推荐阅读
- c - 如何定义全局 gsl_vector
- docker - 无法从 [elasticsearch --version] 或 [elasticsearch -v] 确定 Elasticsearch 版本: shift: can't shift that many
- python - 将计算列添加到 df 的“if”“else”条件的 pandas 等效项
- fs - NodeJS (fs 模块) - 绝对文件路径附加到节点应用程序的 cwd
- keras - 检查输入时出错:预期 time_distributed_136_input 有 5 个维度,但得到了形状为 (16, 128, 128, 3) 的数组
- javascript - 在 JavaScript 中循环数组并使用拼接删除其所有元素?
- asp.net-mvc - 当用户需要更新信息时,Asp.net MVC 4 重定向
- html - 如何在 ReactJS 中的 div 中放置元素?
- amazon-cloudwatch - 如何在 python 用户定义函数中定义 amazon-cloudwatch boto3.client
- java - LibGDX 模型实例颜色未传递给顶点着色器