python - 我可以使用 tkinter 为单个页面创建 2 个模块吗?
问题描述
我想使用 Tkinter 制作一个页面,而且我想在 2 个模块中制作它。在这种情况下,我可以简化代码
我所做的代码是
模块 1 (a1.py)
from tkinter import *
from a2 import frame
root=Tk()
root.title("voccabulary journel")
root.geometry("700x450")
root.configure(bg='#ff8000')
frame()
root.mainloop()
模块 2 (a2.py)
from tkinter import *
def frame():
Grid.rowconfigure(root,0,weight=1)
Grid.columnconfigure(root,0,weight=1)
Grid.columnconfigure(root,1,weight=3)
frame1=Frame(root,background='black')
frame1.grid(row=0,column=0,sticky='nsew')
frame2=Frame(root,background='white')
frame2.grid(row=0,column=1,sticky='nsew')
labeltry1=Label(frame1, text='testing')
labeltry1.pack()
labeltry2=Label(frame2,text='tersting')
labeltry2.pack()
我本可以在一个模块中编写,但我只想简化它..
无论如何我都会附上终端的图像
解决方案
有一个很好的规则:将所有值显式作为参数发送。
这是您的问题 - 在frame()
您使用root
未作为参数发送的情况下。
采用:
a2.py
def frame(root):
# code
a1.py
frame(root)
这解决了您的问题,并使代码更具可读性和更易于调试。
推荐阅读
- python - PyInstaller 和 Google Vision - 转换时出错
- vue.js - 如何访问计算的状态变量?
- php - 如何使用 2 个特定键的值对多维数组进行排序
- sql - 从每个产品类别购物的客户;他们在 SQL Server 项目中平均购买了多少产品类别?
- security - Microsoft Graph - 如何使用安全警报“文件删除量异常”获取关联文件
- java - 工具栏在创建时自动显示后退箭头
- azure - Azure 应用程序网关 ARM 模板问题与 backendHttpSettingsCollection 中的 pickHostNameFromBackendAddress 和主机名
- angular - Dockerized Angular前端无法访问dockerized python后端
- azure - azure管道如何从jenkins服务器触发构建并将文件从自托管linux代理复制到托管代理并在托管代理上构建
- python - 获取与正则表达式 python 匹配的替换词