在编写GUI的过程中,需要将一个按钮的命令单独拎出来执行,其他都正常执行但是grid却没有任何效果,这部分代码如下,重点在最后一段代码
from tkinter import *
from draggableWindow import move_window as m_w
from windowSet import windowSet
import numpy as np
import os
import time
def close_window(event): # 设置关闭窗口的程序
from tkinter import messagebox
if messagebox.askokcancel('退出','请确认是否退出程序'):
root.destroy()
def _on_mousewheel(event): # 鼠标滚轮
canvas_main.yview_scroll(int(-1 * (event.delta / 120)), "units")
root = Tk()
sw = root.winfo_screenwidth()
sh = root.winfo_screenheight()
ww = 1280
wh = 720
x = int((sw - ww) / 2)
y = int((sh - wh) / 2)
root.title("燃烧炉监测窗口")
root.geometry(f'{ww}x{wh}+{x}+{y}')
#root.overrideredirect(True)
m_w(root)
root.bind('<Escape>',close_window) # 将close_window与Esc键绑定
savedSettings = {}
if os.path.isfile('Settings.npy'):
savedSettings = np.load('Settings.npy',allow_pickle = True).item()
canvas_main = Canvas(root,width = ww - 21,height = wh - 33,highlightthickness = 0,bg = 'pink')
scrollbar_main = Scrollbar(root,orient = "vertical",command = canvas_main.yview)
f_main = Frame(canvas_main)
f_main.bind("<Configure>",lambda e: canvas_main.config(scrollregion = canvas_main.bbox('all')))
canvas_main.create_window((0, 0),window = f_main,anchor = "nw")
canvas_main.config(yscrollcommand = scrollbar_main.set)
canvas_main.grid(row = 0,column = 0,sticky = NW)
scrollbar_main.grid(row = 0,column = 1,sticky = NS)
canvas_main.bind_all("<MouseWheel>", _on_mousewheel) # 绑定鼠标滚轮
btSet = Button(root,text = '设置',command = lambda: windowSet(root,savedSettings,f_main),font = ('微软雅黑',10))
btSet.place(relx=1,rely=1,anchor = SE)
if savedSettings != {}:
widgt_c = 0
for i in range(4):
if savedSettings[f"CheckVar{1 + i}"] == 1:
widgt_c += 1
if savedSettings[f"CheckVar{1 + i}"] == 1:
widgt_c += savedSettings['customizeWidgt_n']
for i in range(widgt_c):
print(1)
globals()[f"f_{1 + i}"] = Frame(f_main,width = (root.winfo_width() - 21) / 3,height = (root.winfo_height() - 33) / 3,bg = 'blue')
globals()[f"f_{1 + i}"].grid(row = int(i / 3),column = i % 3,sticky = NW)
globals()[f"f_{1 + i}"].grid_propagate(False)
root.mainloop()
运行结果如下
通过按钮执行的效果如下
第一张图中的4个1证明这段代码正确的被运行了但是f_1,2,3,4却没有在窗口中
这是出现了什么问题呢?也没有报错